欢迎来到天天文库
浏览记录
ID:46628256
大小:34.51 KB
页数:12页
时间:2019-11-26
《VB6使用API实现串口通信》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、需要和客户的产品通讯,但波特率是非常规的,MScomm无法实现,原有的软件框架和条件又不能转用VC开发底层,于是用VB6调用API实现了这个通讯功能,虽然在VB6下这个程序还是单进程的,但实现了异步非阻塞的通信,性能相当稳定,下面是测试程序代码PrivateSubcmdSend_Click()SubcmdSend_Click() '定义文件读写属性结构 DimsaAsSECURITY_ATTRIBUTES '定义串口状态结构 DimtypCommStatAsCOMSTAT '定义串口状态错误 DimlngErrorAsLong '********打开串口*
2、******* DimhCFAsLong hCF=CreateFile("COM4",_ GENERIC_READOrGENERIC_WRITE,0,sa,_ OPEN_EXISTING,FILE_ATTRIBUTE_NORMALOrFILE_FLAG_OVERLAPPED,0) Debug.Print"打开串口:"&hCF '********获取出错信息******** DimerrNumAsLong errNum=GetLastError() Debug.Print"出错信
3、息:"&errNum '定义标志值 DimflagAsLong '定义设备控制块 DimtypDCBAsDCB '********获取设备控制块******** flag=GetCommState(hCF,typDCB) Debug.Print"获取串口DCB:"&flag typDCB.BaudRate=2500 '定义波特率 typDCB.Parity=NOPARITY '无校验位 typDCB.ByteSize=8 '数据位 typDCB.StopBits=0 '停止位
4、0/1/2=1/1.5/2 '********设置串口参数******** flag=SetCommState(hCF,typDCB) Debug.Print"设置串口参数:"&flag '********设置缓冲区大小******** flag=SetupComm(hCF,1024,1024) 'Debug.Print"设置缓冲区:"&flag '********清空读写缓冲区******** flag=PurgeComm(hCF,PURGE_RXABORTOrPURGE_RXCLEAROrPURGE_TXABORTOrPURGE
5、_TXCLEAR) 'Debug.Print"强制清空缓冲区:"&flag '定义超时结构体 DimtypCommTimeoutsAsCOMMTIMEOUTS typCommTimeouts.ReadIntervalTimeout=0 '相邻两字节读取最大时间间隔(为0表示不使用该超时间隔) typCommTimeouts.ReadTotalTimeoutMultiplier=0 '一个读操作的时间常数 typCommTimeouts.ReadTotalTimeoutConstant=0 '读超时常数 typCommTimeout
6、s.WriteTotalTimeoutMultiplier=0 '一个写操作的时间常数(为0表示不使用该超时间隔) typCommTimeouts.WriteTotalTimeoutConstant=0 '写超时常数(为0表示不使用该超时间隔) '********超时设置******** flag=SetCommTimeouts(hCF,typCommTimeouts) 'Debug.Print"超时设置:"&flag '********发送数据******** '定义要发送字节数 DimlngNumberofByte
7、sToWriteAsLong '定义实际发送字节数 DimlngNumberofBytesToWrittenAsLong '定义重叠结构体 DimtypOverLappedAsOVERLAPPED '定义发送数据 DimarrbytTest(0To23)AsByte '载波收发器同步头 arrbytTest(0)=CByte(&H53) arrbytTest(1)=CByte(&
此文档下载收益归作者所有