Strange Serial Input

I seem to be getting very weird serial input for Dashboard3D. For example, when the robot/control board is not on/connected, I get 48 for the packet number, 176 for p2wheel, 48 for ctrl-A, etc. I don’t understand… Also, when everything is connected and running, I seem to get very odd numbers. I might be doing something wrong but I don’t know…
Here is the serial init code (keep in mind that it is in a bool function in a class structure):

**
HANDLE hfSerial;
COMMTIMEOUTS m_CommTimeouts;
hfSerial=CreateFile(Comm,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if(hfSerial==INVALID_HANDLE_VALUE)
{
if(GetLastError()==ERROR_FILE_NOT_FOUND){return false;}
}
SetupComm(hfSerial,128,128);
DCB dcbSerialParams;
ZeroMemory(&dcbSerialParams,sizeof(dcbSerialParams));
dcbSerialParams.DCBlength=sizeof(dcbSerialParams);
if(!GetCommState(hfSerial,&dcbSerialParams))return false;
dcbSerialParams.BaudRate=CBR_19200;
dcbSerialParams.ByteSize=8;
dcbSerialParams.StopBits=ONESTOPBIT;
dcbSerialParams.Parity=NOPARITY;
if(!SetCommState(hfSerial,&dcbSerialParams))return false;
if(!GetCommTimeouts(hfSerial, &m_CommTimeouts))return false;
m_CommTimeouts.ReadIntervalTimeout = 50;
m_CommTimeouts.ReadTotalTimeoutConstant = 50;
m_CommTimeouts.ReadTotalTimeoutMultiplier = 10;
m_CommTimeouts.WriteTotalTimeoutConstant = 50;
m_CommTimeouts.WriteTotalTimeoutMultiplier = 10;
if(!SetCommTimeouts(hfSerial, &m_CommTimeouts))return false;
hSerial=hfSerial;
strcpy(cComm,Comm);
bConnected=true;
_beginthread(SerialThread,0,NULL);
return true;**

That part all looks fine to me, but I don’t have an API spec sitting in front of me, so I may have missed something. What does the actual SerialThread function look like? If you either post it here or email it to me, I’ll see if I can find anything amiss.

–Rob

maybe i’m really stupid, but my guess (after only going through one hellish college semester of C++) is that you have some data structures in your code, and some functions that you don’t want to share with us. i looked through the code and don’t recognize many keyword the c++ compiler knows, so that’s why i assume they are names of data structures. if this is true, then i’m not as dumb as many (including i) perceive, and your error may be in the variable initializations, structures, or methods that manipulate the variables. if my insight doesn’t help than just put it off until later.

You are right to say that I have declared my own classes but I don’t think that it is the problem. I could be wrong though… I might just write a small app to test it… As for not wanting to share, that is not the case. I don’t mean to sound defensive but I am planning to make this open source as soon as I finish version 1. I’m not trying to hide anything, it is just easier to only distribute it to a few people until it’s done.

Hmm… can’t say I’m familiar enough with the Win32 serial APIs to check your code, but…

Did you try hooking up to another computer terminal with a null modem cable, to see if you could read known-good serial data?

Are you getting the ‘255, 255’ signature correctly? If so, it’s probably a good indicator that the communication infrastructure itself is at least nominally functional and properly set up, and vice versa.

Also, you explicitly checked for timeout conditions in the code that actually does the reading, right? Otherwise, you might just be reading uninitialized data members…

–Micah