昨天朋友让我帮忙写一个WIN下的串口通讯程序,之前也仅仅写过lINUX下的串口,对WIN下面的串口通讯程序还不是特别了解,所以就去网上找资料,现学现写吧。
对于WIN32串口通讯网上给出的的讲解也比较多,历程也很多,作为一个小白没有能力去向大家讲解串口通讯的基本原理和API调用,但是我发现网上给出的例程好像跑不起来,多多少少会有点小问题,在此我只能将自己运行通过的代码和编写时遇到的一些小问题贴出来,大家一起学习交流,也希望给像我一样的小白第一次写串口程序一些小帮助。
因为在参加比赛期间,时间比较紧,所以代码也没有整理,有诸多不完善的地方,希望各位大神谅解。废话不多说,代码如下
/**************************************************************
* 串口通信
* 包含初始化函数,接收函数,发送函数
* 仅写了字符发送和接收,需要可以增加单字节发送和接收
* 通过宏SERIAL_COM修改使用COM口,SERIAL_BOUD 修改波特率
* 默认:COM口:com5 波特率:115200 数据位:8 停止位:1 校验:无
* 环境:VS2010
***************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <winbase.h>
HANDLE Robocon_com;
#define SERIAL_COM L"com5" //com口
#define SERIAL_BOUD 115200
//串口初始化
int Serial_Init()
{
DCB com_dcb; //参数设置
COMMTIMEOUTS tim_out;
Robocon_com = CreateFile(SERIAL_COM,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
if(Robocon_com == (HANDLE)-1)