串口操作示例代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

030405060708091011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 //------------------------------------------- //初始化串口 HANDLE hCom; hCom=CreateFile(_T("COM1"), //lpFileName:将要打开的串口逻辑名,如“COM1” GENERIC_READ|GENERIC_WRITE, //dwDesiredAccess:指定串口访问的类型,可以是读取、写入或二者并列 0, //dwShareMode:指定共享属性,由于串口不能共享,该参数必须置为0 NULL, //lpSecurityAttributes:引用安全性属性结构,缺省值为NULL OPEN_EXISTING, //dwCreationDistribution:打开而不是创建,对串口操作该参数必须置为OPEN_EXISTING 0, //dwFlagsAndAttributes:属性描述,用于指定该串口是否进行异步操作, //该值为FILE_FLAG_OVERLAPPED,表示使用异步的I/O;该值为0,表示同步I/O操作 NULL); //hTemplateFile:对串口而言该参数必须置为NULL if(hCom==(HANDLE)-1) { //Message(_T("[串口] COM5 打开失败.\n")); return; } //Message(_T("[串口] COM5 打开成功.\n")); if(!SetupComm(hCom,1024,1024)) //Message(_T("[串口] 串口设置缓冲区失败.\n")); else //Message(_T("[串口] 串口设置缓冲区成功.\n")); COMMTIMEOUTS TimeOuts; //设定读超时 TimeOuts.ReadIntervalTimeout=1000; TimeOuts.ReadTotalTimeoutMultiplier=500; TimeOuts.ReadTotalTimeoutConstant=5000; //设定写超时 TimeOuts.WriteTotalTimeoutMultiplier=500; TimeOuts.WriteTotalTimeoutConstant=2000; if(!SetCommTimeouts(hCom,&TimeOuts)) //Message(_T("[串口] 设置超时失败.\n")); else //Message(_T("[串口] 设置超时成功.\n")); //配置串口是通过改变设备控制块DCB (Device Control Block) 的成员变量值来实现的, //接收缓冲区和发送缓冲区的大小可通过SetupComm函数来设置。 DCB dcb; if(!GetCommState(hCom,&dcb)) //Message(_T("[串口] 获取串口属性成功.\n")); else //Message(_T("[串口] 获取串口属性成功.\n")); dcb.BaudRate = CBR_9600; //波特率为9600 //波特率,指定通信设备的传输速率。这个成员可以是实际波特率值或者下面的常量值之一: // CBR_110,CBR_300,CBR_600,CBR_1200,CBR_2400,CBR_4800,CBR_9600,CBR_19200, CBR_38400, //CBR_56000, CBR_57600, CBR_115200, CBR_128000, CBR_256000, CBR_14400 dcb.ByteSize = 8; //数据位数 4—8 dcb.Parity = NOPARITY; //指定奇偶校验方法。此成员可以有下列值 //EVENPARITY 偶校验 //NOPARITY 无校验 //MARKPARITY 标记校验 //ODDPARITY 奇校验 dcb.StopBits = ONESTOPBIT; //停

止位 ONESTOPBIT 1位停止位, ONE5STOPBITS 1.5位停止位, TWOSTOPBITS 2位停止位 dcb.fBinary=1; dcb.fParity=0; if (!SetCommState(hCom, &dcb)) //Message(_T("[串口] COM5 设置失败.\n")); else //Message(_T("[串口] COM5 设置成功.\n")); PurgeComm(hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR); //终止所有的后台读写操作并清空接收缓冲区和发送缓冲区 //PURGE_TXABORT 中断所有写操作并立即返回,即使写操作还没有完成。 //PURGE_RXABORT 中断所有读操作并立即返回,即使读操作还没有完成。 //PURGE_TXCLEAR 清除输出缓冲区 //PURGE_RXCLEAR 清除输入缓冲区 //发送数据 DWORD ComWriteReturn; WriteFile(hCom,buffer,128,&ComWriteReturn,NULL););


相关文档
最新文档