Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   Strange Serial Input (http://www.chiefdelphi.com/forums/showthread.php?t=17034)

Adam Shapiro 27-01-2003 10:01

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_EXI STING,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;

rbayer 29-01-2003 19:18

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

mjt902 30-01-2003 17:52

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.

Adam Shapiro 30-01-2003 20:09

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.

Micah Brodsky 31-01-2003 02:01

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


All times are GMT -5. The time now is 04:29.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi