当前位置:我的异常网» C语言 » 用WIN32 API编纂串口程序
用WIN32 API编纂串口程序
www.myexceptions.net 网友分享于:2014-07-28 浏览:0次
用WIN32 API编写串口程序
我按照百度文库上的文档一步一步照抄一遍,大概的流程就是
hComm = CreateFile (ComName, //串口号
GENERIC_READ , //只允许读操作
0, //串口不可共享,必须以独占方式打开
NULL, //安全属性为NULL
OPEN_EXISTING, //通讯设备串口已存在
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, //异步I/O
NULL); //通讯设备不能用模板打开if (hComm == INVALID_HANDLE_VALUE)
{
CloseHandle(hComm);
printf("打开COM失败!");
}
else
{
printf("打开COM成功!");
/*********设置串口参数***********/
memset(&dcb,0,sizeof(dcb)); //将dcb清零
if(!GetCommState(hComm,&dcb)) //获取串口当前状态
{
printf("打开COM状态失败!");
}
else
{
printf("打开COM状态成功!");
dcb.DCBlength = sizeof(dcb); //设置dcb结构体大小
dcb.BaudRate = BaudRate; //设置波特率
dcb.fBinary = FBinary; //设置二进制
dcb.fParity = FParity; //设置进行奇偶校验
dcb.fOutxCtsFlow = 0; //输出控制时,CTS(clear to send)线上的硬件握手
dcb.fOutxDsrFlow = 0; //输出控制时,DSR(data set ready)线上的硬件握手
dcb.fDtrControl = DTR_CONTROL_DISABLE; //DTR(data terminal ready)控制
dcb.fDsrSensitivity = 0; //DSR灵敏度
dcb.fTXContinueOnXoff = 0; //输入缓冲区已满且以传输XoffChar字符后,XOFF是否继续发送
dcb.fOutX = 0; //是否使用XON/XOFF输出控制
dcb.fInX = FInx; //是否使用XON/XOFF输入控制
dcb.fErrorChar = 0; //是否将奇偶校验错误的字符由ErrorChar代替
dcb.fNull = 0; //是否丢弃null字节
dcb.fRtsControl = RTS_CONTROL_DISABLE; //RTS(request to send)控制
dcb.fAbortOnError = 0; //发生错误时,是否中止读写错误
dcb.fDummy2 = 0; //保留
//dcb.wReserved = 0; //保留,Not currently used
dcb.XonLim = 1024; //设置在XON字符发送之前inbuf中允许的最少字节数
dcb.XoffLim = 1024; //设置在发送XOFF字符之前outbuf中允许的最多字节数
dcb.ByteSize = ByteSize; //设置数据宽度
dcb.Parity = Parity; //设置校验
dcb.StopBits = StopBits; //设置停止位
dcb.XonChar = XonChar; //设置表示XON字符的字符
dcb.XoffChar = XoffChar; //设置表示XOFF字符的字符
dcb.EvtChar = 0; //设置表示event字符的字符
文章评论