快来帮帮我呀:串口通信问题,在线等
一台终端与交换机相连,数据传输用串口(COM1)。
串口设置如下:
设备名:COM1
比特:1200
数据位:7
校验:0
停止位:1
调用下面的函数是老是出错,返回值是3
int OpenComm(const char* pPort/*串口名, const int nBaudRate/* =CBR_1200 */, const int nParity/* =NOPARITY */, const int nByteSize/* =7 */, const int nStopBits/* =1 */)
{
DCB dcb; // 串口控制块
COMMTIMEOUTS timeout;
timeout.ReadIntervalTimeout = 100;
timeout.ReadTotalTimeoutMultiplier = 1;
timeout.ReadTotalTimeoutConstant = 500;
timeout.WriteTotalTimeoutMultiplier = 1;
timeout.WriteTotalTimeoutConstant = 100;
m_hComm = CreateFile(pPort, // 串口名称或设备路径
GENERIC_READ ¦ GENERIC_WRITE,// 读写方式
0, // 共享方式:独占
NULL, // 默认的安全描述符
OPEN_EXISTING, // 创建方式
0, // 不需设置文件属性
NULL); // 不需参照模板文件
if(m_hComm == INVALID_HANDLE_VALUE)
{
return 1; // 打开串口失败
}
if (!GetCommState(m_hComm, &dcb)) // 取DCB
{
return 2;
}
dcb.BaudRate = nBaudRate;
dcb.ByteSize = nByteSize;
dcb.Parity = nParity;
dcb.StopBits = nStopBits;
if (!SetCommState(m_hComm, &dcb)) // 设置DCB
{
return 3;
}
if (!SetupComm(m_hComm, 1024*1, 1024*1))// 设置缓冲区
{
return 4;
}
if (!SetCommTimeouts(m_hComm, &timeout))// 设置超时
{
return 5;
}
return 0;
}
一切硬件连接正常(用超级终端连接正常)
请各位高手帮忙看看是什么问题? 很急!先谢了!