串口编程的问题,(急)
sky 2003-07-04 04:32:04 用API开发串口通讯程序:作了两个函数,
1:初始化函数:内容如下
//定义全局变量
HANDLE hCom; //准备打开的串口的句柄
OVERLAPPED Overlapped;
//打开串口,设置串口
hCom =CreateFile("COM1",GENERIC_READ|GENERIC_WRITE, //允许读写
0,//此项必须为0,不可共享
NULL, //不可被继承
OPEN_EXISTING, //设置产生方式
FILE_FLAG_OVERLAPPED, //准备使用异步通信
NULL);
}
SetCommMask(hCom, EV_RXCHAR|EV_TXEMPTY );//设置事件驱动的类型
//EV_RXCHAR: 接收到一个字节,并放入输入缓冲区
//EV_TXEMPTY:输出缓冲区中的最后一个字符,发送出去
SetupComm( hCom, 1024,512) ; //设置输入、输出缓冲区的大小
PurgeComm( hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR
| PURGE_RXCLEAR ); //清干净输入、输出缓冲区
COMMTIMEOUTS CommTimeOuts ; //定义超时结构,并填写该结构
SetCommTimeouts( hCom, &CommTimeOuts ) ;//设置读写操作所允许的超时
DCB dcb ; // 定义数据控制块结构
GetCommState(hCom, &dcb ) ; //读串口原来的参数设置
dcb.BaudRate=9600; //波特率
dcb.ByteSize=8;
//一个字节的长度为8
dcb.Parity=NOPARITY;
// 04=no,odd,even,mark,space
dcb.StopBits=ONESTOPBIT; //一个停止位
dcb.fBinary=TRUE; //二进制传送
dcb.fParity=FALSE; //无奇偶校验
SetCommState(hCom, &dcb ) ; //串口参数配置
初始化完成后,测试证明初始化无错误,之后作发送数据测试,代码如下:
PurgeComm( hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR
| PURGE_RXCLEAR ); //先清干净输入、输出缓冲区
BOOL fWriteStat ;
byte dat=66; //要发送的数据
fWriteStat = WriteFile( hCom,
&dat,
1,
NULL,
Overlapped); //写数据
执行发送之后为什么fWriteStat返回的值总是0,为什么发送不成功,请教各位了!