Sending Data

Ok, I’m almost done w/ my PBASIC Editor, and I’m just wondering…how would you send the code (in MFC)?

I’ve created a thread, and it doesn’t have any problems.

I’ve been looking at how roboIDE sent the code, and if anyone can just translate these from Linux to Windows I would be set (I don’t know any *nux programming):


read(fd, data, bytes);

I know the “read(…);” function reads the data from a port…but I’m not sure of the equivalent of it in Windows.


write(fd, data, bytes);

Save as “read(…);”


close(fd);

I’ve attempted “CloseHandle(…);”, but it throws back a error.


int openSerial(char *port){
   int fd;
   struct termios tios;

   fd=open(port, O_NOCTTY | O_RDWR | O_NONBLOCK);
   if(fd<0){
     sprintf(lastError, "%s: %s
", port, strerror(errno));
     return fd;
   }

   bzero(&tios, sizeof(termios));

   tios.c_cflag = BAUDRATE | CS8 | CREAD;
   tios.c_iflag = IGNPAR;
   tios.c_oflag=0;

   tios.c_lflag=0;

   //satisfy read immediately.
   tios.c_cc[VTIME]=0;
   tios.c_cc[VMIN]=0;

   tcflush(fd, TCIFLUSH);
   tcsetattr(fd, TCSANOW, &tios);

   return fd;
}

<<EDIT>>: I know fd stands for file directive (I think anyways).

*Originally posted by Raven_Writer *
**<<EDIT>>: I know fd stands for file directive (I think anyways). **
File Descriptor. I can’t help with your actual question, though, … sorry

*Originally posted by Brandon Martus *
**File Descriptor. I can’t help with your actual question, though, … sorry **

Thanks Brandon :wink: I talked to Rob last night, and now I only need help on the last code section. read() = ReadFile(), write() = WriteFile().

<< Edit >>: The stuff below bolded is what I don’t get:


int openSerial(char *port){
   **struct termios tios;**

   fd=open(port, **O_NOCTTY | O_RDWR | O_NONBLOCK**);
   if(fd<0){
     sprintf(lastError, "%s: %s
", port, strerror(errno));
     return fd;
   }

   **tios.c_cflag = BAUDRATE | CS8 | CREAD;
   tios.c_iflag = IGNPAR;
   tios.c_oflag=0;

   tios.c_lflag=0;**

   //satisfy read immediately.
   **tios.c_cc[VTIME]=0;
   tios.c_cc[VMIN]=0;

   tcflush(fd, TCIFLUSH);
   tcsetattr(fd, TCSANOW, &tios);**

   return fd;
}

You’re trying to mix POSIX and Win32. The two are NOT compatible and probably never will be, knowing MS. Instead, I’d recomend you grab code snippets out of RoboGUI, as it also has the ability to tokenize and send directly to the RC.

-Rob

*Originally posted by rbayer *
**You’re trying to mix POSIX and Win32. The two are NOT compatible and probably never will be, knowing MS. Instead, I’d recomend you grab code snippets out of RoboGUI, as it also has the ability to tokenize and send directly to the RC.

-Rob **

Ok, thanks. I’ve been able to get most of the code to compile without error though (not been able to actually send though, not tested that far). I’ve been looking through both RoboGUI and RoboEMU, and RoboGUI I thought had some sending code (and apperently I’m right, woo hoo!).

Again, thanks.

If i remember correctly, there is an MSDN article on serial port communications, with code samples.

<edit>
or maybie not. I can’t seem to find the article. I know im not crazy. Im pretty sure i saw it at one time or another.
</edit>

I’ve got my program 99.9% running without problems. Only problem I’m having right now is having it not close when it cannot connect/send data to a specific port.

If you would like to see my code for it (it’ll be a big thing to post on CD), IM, PM, or e-mail me.

Umm… more details, please. What is/isn’t closing that shouldn’t/should be? Are you talking about the file handle? Or the program itself.
/me=:confused:

*Originally posted by rbayer *
**Umm… more details, please. What is/isn’t closing that shouldn’t/should be? Are you talking about the file handle? Or the program itself.
/me=:confused: **

Sorry. Here’s what happens:

I open a file that has the default code for v2 of PBASIC that Innovation First supplied us, and goto Run->Download (which downloads the code). When I do that, what happens is that it shows two message boxes saying “Error getting serial port status” (which I can pin-point where the main problem seems to be). Then after I click OK twice (once for each message box), the program itself closes.

(I know this may be a bunch of wasted typing, but I hope that it clears it up as much as possible)