CAN总线与PC机串口通信适配器设计与实现
无线测试方案供应商LitePoint公司宣布支持对当前应用广泛的基于ZigBee|0"> 系统软件设计
软件设计分PC机Visual BasiC编程和AT89C51单片机C语言编程2部分。
PC机部分
采用VB6. 0编程,这样界面非常直观,人机交互效果好。VB提供了具有通讯功能的MSComm. OCX控件,该控件可设置串行通信的数据发送和接收,对串口状态及串口通信的信息格式和协议进行设置。MSComm控件提供2种处理通讯的方式:(1)事件驱动通讯,即发送或接收数据过程中触发ONCOMM事件,通过编程访问CommEvent属性了解通信事件的类型,分别进行各自的处理;(2)查询方式,通过检查CommEvent属性的值来查询事件和错误。采取查询方式。控件MSComm是将RS-232的初级操作予以封装,用户以高级的BasiC语法即可利用RS-232与外界通信并不需要了解其他有关的初级操作,因此使用方便。
MSComm控件初始化:
MSComm1. CommPort= 2 设置串口2
MSComm1. SettingS="9600,N,8,1" 设定工作方式
MSComm1. InBufferSize = 10 根据1次传1个CAN帧,设置输入缓冲区大小
MSComm1. InputMode = 1 二进制形式接收
MSComm1. InputLeN= 0 一次读出输入缓冲区中的所有数据
MSComm1. OutBufferSize = 10 输出缓冲区大小的设置
MSComm1. OutBufferCount= 0 清空输出缓冲区
MSComm1. PortOpeN= True 打开串口
PC机与单片机MSC51之间的通信约定如下:一般情况下PC与多个MSC51单片机系统进行主从式通信,其方案是MSC51采用串口工作方式3,即11位异步接收/发送方式,有效数据为9位,其中第9位为地址/数据信息的标志位,以此区分各从机。但现在PC机采用VB编程,其MSComm控件为标准的10位串口通信,包括8位标准数据和数据的起始位和停止位。将单片机串口设为工作方式1,即改为10位异步接收/发送方式,通讯流程如下:
通讯时首先发通信开始标志,接着发送各下位机单片机的地址信号和芯片的片选信号,然后发送单片机的工作命令字。再往下即进行数据处理,转入相应的处理功能模块,最后对数据进行效验。这个通讯流程非常简便,实现了PC机与单片机之间的主从式通讯。
以下为VB的发送接收程序:
Private SuBcmdSendàClick() 使用按钮控件
MSComm1. Output= txtSend. Text 将传送区内的字符串以Output属性送出
End Sub
Private SuBFormàLoad() 窗体的加载事件
MSComm1. PortOpeN= True 将通讯断口开启,通讯参数也可以在开启前先设定
MSComm1. RThreshold = Val (txtThreshold. Text) 设定引发接收事件的接收阈值,使程序一执行便开启通讯端口,将接收的阈值设定为阈值,设定文本框内的值。
End Sub
Private SuBMSComm1. OnComm() 通讯控件的OnComm事件。引发接收事件后,将字符收进来并放在接收的文本框中
SelectCase MSComm1. CommEvent 根据下面每一个case 语句处理每个事件和错误事件
Case comEvCD CD 线的状态发生变化
Case commEvReceive 收到Rthreshold # of
txtReceive. Text= txtReceive. Text+ Trim(MSComm1. Input)&vbCrLf
Case comEvSend 传输缓冲区有Sthreshold 个字符
End Select
End Sub
Private SuBtxtThreshold Change ( ) p阈值设定文本框的Change事件
MSComm1. Rthreshold = Val (txtThreshold. Text) p当设定的阈值变化时,实时改变通讯对象的属性
End Sub
- CAN总线与RS-485总线的通信接口设计(07-27)
- CAN总线到Ethernet网的网关研究实现(08-22)
- 基于DSP和CAN总线的数据采集与处理系统(11-04)
- 基于DSP的PCI总线CAN适配器设计(02-07)
- CAN总线的通信错误与处理措施(07-13)
- 基于FPGA和MCU的CAN-VME总线转换设计(01-10)