From: Noriaki M. <mno...@gm...> - 2012-03-07 01:27:04
|
How about using __BASE_FILE__ ? However, it seems that there is no need to parse string at runtime. Why not just put string "Firmata" or something in .ino? // Noriaki Mitsunaga 2012/3/7 Jeff Hoefs <sou...@gm...>: > Any other thoughts on this? It would be nice to get this bug fix in for the > Arduino release candidate this weekend. > > -jeff > > On Sun, Mar 4, 2012 at 12:01 PM, Jeff Hoefs <sou...@gm...> > wrote: >> >> I think what Paul is saying make sense. For example in an Arduino library >> you never really have targets like _WIN32, you have targets like #if >> defined(__AVR_ATmega328P__) so in that case I'm not sure how to determine >> what platform the code is compiled on which is why I figured the next best >> solution is to check for the null pointer on strrchr(name, '/') to at least >> determine if the filename is OS X / Linux or Windows. >> >> -jeff >> >> >> On Sun, Mar 4, 2012 at 11:53 AM, Jeff Hoefs <sou...@gm...> >> wrote: >>> >>> That was my initial thought as well, however if you make that change to >>> Firmata.cpp (beginning at line 123) in the Arduino package in Windows the >>> compiler (core libraries are compiled automatically when the Arduino >>> application starts up... so whatever compiler is used... avr-gcc I assume) >>> doesn't seem to recognize _WIN32 or _WIN64. The issue then is >>> REPORT_FIRMWARE does not for Windows users. In my test case I made a >>> temporary change to set the version number to 2.4 just to be sure the code >>> was compiling correctly and that is working so it is definitely an issue >>> with the compiler and _WIN32 / _WIN64, etc. >>> >>> -jeff >>> >>> >>> On Sun, Mar 4, 2012 at 1:21 AM, Hans-Christoph Steiner <ha...@at...> >>> wrote: >>>> >>>> >>>> It really should only be (note leading underscores): >>>> >>>> #if defined _WIN32 || defined _WIN64 >>>> >>>> All compilers define _WIN32 including MinGW. Not all compilers define >>>> WIN32 and WIN64. And Cygwin is not Win32 at all, and uses "/" as the path >>>> separator, so it also should not be there. >>>> >>>> I think the #if is the preferred way since this is a platform-specific >>>> issue. >>>> >>>> .hc >>>> >>>> On Mar 3, 2012, at 9:59 AM, Jeff Hoefs wrote: >>>> >>>> > Basile and I tried the following but none worked in Win 7 64-bit: >>>> > #if defined WIN32 || defined WIN64 || defined _WIN32 || defined _WIN64 >>>> > || defined __CYGWIN__ || defined __MINGW32__ >>>> > However the following works and I have also tested in OS X and Linux >>>> > to make sure there were no adverse effects: >>>> > >>>> > if (strrchr(name, '/') != NULL) >>>> > filename = strrchr(name, '/') + 1; //points to slash, +1 gets to >>>> > start of filename >>>> > else >>>> > filename = strrchr(name, '\\') + 1; //points to slash, +1 gets to >>>> > start of filename >>>> > >>>> > Let me know if anyone is opposed to this change or would like to >>>> > perform any additional testing. If not, I will commit and update the version >>>> > to 2.3.2. It would be nice to get this bug fix in the upcoming Arduino >>>> > release. >>>> > >>>> > -jeff >>>> > >>>> > >>>> > On Wed, Feb 29, 2012 at 2:29 PM, Hans-Christoph Steiner >>>> > <ha...@at...> wrote: >>>> > >>>> > Something like this should work. _WIN32 for be for any compiler on >>>> > the Win32 platform (MSVC, MinGW, etc). If the problem is only related to >>>> > the MSVC compiler, then it would be #ifdef _MSC_VER. >>>> > >>>> > #ifdef _WIN32 >>>> > strrchr(name, '\\') + 1; >>>> > #else >>>> > strrchr(name, '/') + 1; >>>> > #endif >>>> > >>>> > .hc >>>> > >>>> > On Feb 29, 2012, at 9:37 AM, Jeff Hoefs wrote: >>>> > >>>> >> I have confirmed this as well. You can submit an issue on the Firmata >>>> >> github site: https://github.com/firmata/arduino >>>> >> >>>> >> I'm not a windows user, but I assume the fix is to set a conditional >>>> >> to handle strrchr... differently for Win and Mac/Linux. >>>> >> >>>> >> -jeff >>>> >> >>>> >> On Wed, Feb 29, 2012 at 2:14 AM, Basile Laderchi >>>> >> <bas...@gm...> wrote: >>>> >> I found a bug in the Arduino Firmata library and I don't know if it >>>> >> has been filed as a bug! >>>> >> >>>> >> Bug Description: >>>> >> When the StandardFirmata (v2.3.1 that comes with arduino v1.0) gets >>>> >> compiled and uploaded to an Uno R1 board then if you try to get the >>>> >> REPORT_FIRMWARE it retuns nothing. >>>> >> The problem is located on line 123 of the Firmata.cpp (filename = >>>> >> strrchr(name, '/') + 1;) and it is caused because I am compiling the >>>> >> .ino and .cpp under Windows 7 (so the __FILE__ is something like >>>> >> C:\Robot\ ... \Firmata.cpp instead of C:/Robot/ ... /Firmata.cpp as >>>> >> expected). >>>> >> >>>> >> basile >>>> >> >>>> >> P.S.: is there an official bug-tracker for the Firmata project? >>>> >> >>>> >> >>>> >> ------------------------------------------------------------------------------ >>>> >> Virtualization & Cloud Management Using Capacity Planning >>>> >> Cloud computing makes use of virtualization - but cloud computing >>>> >> also focuses on allowing computing to be delivered as a service. >>>> >> http://www.accelacomm.com/jaw/sfnl/114/51521223/ >>>> >> _______________________________________________ >>>> >> Firmata-devel mailing list >>>> >> Fir...@li... >>>> >> https://lists.sourceforge.net/lists/listinfo/firmata-devel >>>> >> >>>> >> >>>> >> ------------------------------------------------------------------------------ >>>> >> Virtualization & Cloud Management Using Capacity Planning >>>> >> Cloud computing makes use of virtualization - but cloud computing >>>> >> also focuses on allowing computing to be delivered as a service. >>>> >> >>>> >> http://www.accelacomm.com/jaw/sfnl/114/51521223/_______________________________________________ >>>> >> Firmata-devel mailing list >>>> >> Fir...@li... >>>> >> https://lists.sourceforge.net/lists/listinfo/firmata-devel >>>> > >>>> > >>>> > >>>> > >>>> > ---------------------------------------------------------------------------- >>>> > >>>> > Looking at things from a more basic level, you can come up with a more >>>> > direct solution... It may sound small in theory, but it in practice, it can >>>> > change entire economies. - Amy Smith >>>> > >>>> > >>>> > >>>> >>>> >>>> >>>> >>>> ---------------------------------------------------------------------------- >>>> >>>> News is what people want to keep hidden and everything else is >>>> publicity. - Bill Moyers >>>> >>>> >>> >> > > > ------------------------------------------------------------------------------ > Keep Your Developer Skills Current with LearnDevNow! > The most comprehensive online learning library for Microsoft developers > is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, > Metro Style Apps, more. Free future releases when you subscribe now! > http://p.sf.net/sfu/learndevnow-d2d > _______________________________________________ > Firmata-devel mailing list > Fir...@li... > https://lists.sourceforge.net/lists/listinfo/firmata-devel > |