|
我要把一个VC写的东东改到linux下面,这个东东是关于串口通讯的。
VC下面的设置是这样的:
DCB dcb;
GetCommState(hCom, &dcb);
dcb.BaudRate = 115200;
dcb.ByteSize = 8;
dcb.Parity = 0;
dcb.StopBits = 2;
SetCommState(hCom, &dcb);
COMMTIMEOUTS timeOuts;
GetCommTimeouts(hCom, &timeOuts);
timeOuts.ReadTotalTimeoutMultiplier = 100;
timeOuts.WriteTotalTimeoutConstant = 100;
SetCommTimeouts(hCom,&timeOuts);
//////////////////////////////////////////////////////////////////////////////
我是这样理解的:
波特率 115200
数据位 8位
没有校验
停止位 2位
这两个我不怎么明白
timeOuts.ReadTotalTimeoutMultiplier = 100;
timeOuts.WriteTotalTimeoutConstant = 100;
///////////////////////////////////////////////////////////////////////////////
我在linux下面是这样设置的
使用raw方式
termios tpt;
g_fd = open("/dev/ttyS0", O_RDWR );//期间我尝试加了选项 | O_NOCTTY
if(g_fd == -1)
return false;
tcgetattr(g_fd, &tpt);
tpt.c_cflag |= (CLOCAL | CREAD);
//8 data bits
tpt.c_cflag &= ~CSIZE;
tpt.c_cflag |= CS8;
//no check
tpt.c_cflag &= ~PARENB;
tpt.c_iflag &= ~INPCK;//期间我尝试把此句注释掉,也是不行
//2 stop bits
tpt.c_cflag |= CSTOPB;
tpt.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
tpt.c_oflag &= ~OPOST;
tpt.c_oflag &= ~VTDLY;
tpt.c_iflag &= ~(IXON | IXOFF | IXANY);
tpt.c_cc[VTIME] = 1;
tpt.c_cc[VMIN] = 0;
cfsetispeed(&tpt, B115200);
cfsetospeed(&tpt, B115200);
tcsetattr(g_fd, TCSANOW, &tpt);
发现通讯有问题.
///////////////////////////////////////////////////////////////////
请大家帮忙看看
1。我对vc的设置理解是否有误?
2。我在linux的设置是否正确?
2。如果出错该如何改?
谢谢! |
|