From: Jeff H. <sou...@gm...> - 2012-03-04 16:53:18
|
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 > > > |