我想读取XMT808-S仪表的数据,通讯协议RS485串口,数据发送采用ASCI码,数据帧格式: A/地址/符号/显示数据;发送的数据菜蔬数据帧方式一次性向外发送,数据头为:"A",其后为仪表地址,数据符号及实时显示值,如仪表显示2.000,仪表地址设为1,则仪表发送的数据帧为“A1+2.000".设置地址应答发送模式,上位机给仪表发送地址1,必须以自然码1来发送,不能以1的ASCI码发送给。我已经连接好硬件,COM3,波特率4800,地址1。在串口调试串口里,要发送什么数据,仪表才能应答呢?
解决方案 »
- VB---为什么会出现“多步操作产生错误,请检查每一步状态值”?
- 在百度搜索"百度"会被转换成"%B0%D9%B6%C8"这个是怎么转换的?
- 关于MSHFLEXGRID
- 在VB6里怎么将用水晶报表显示的数据按报表格式导出另存为其它格式的文档?
- 我用adodc控件连接数据库时,若通过“使用连接字符串”连接,则在“测试连接”时提示错误:
- 请问程序为何执行Combo1_Click()这个过程?
- 如何给按钮加上文字提示???
- 2000元用蚁群算法编程序,高手来
- 讨论有分啰!用过True Dbgrid的请进来一叙!
- 如何象oicq那样在标题栏添加一个按钮?
- 求批处理命令,将文件命名为文件夹名
- 求VB操作PPPOE连接的代码(百度知道悬赏250金币)
MSComm1.Output = Chr(&H1)
End SubPrivate Sub Command2_Click()
Unload Me
End SubPrivate Sub Form_Load()
MSComm1.CommPort = 3
MSComm1.Settings = "4800,n,8,1"
MSComm1.PortOpen = True
End SubPrivate Sub Text1_Change()
'如何在文本框里得到仪表发送的值呢?
End Sub
Private Sub Command1_Click()
MSComm1.Output = Chr(&H1) '发送一个自然码1,这样发对吗?
End SubPrivate Sub Command2_Click()
Unload Me
End SubPrivate Sub Form_Load()
MSComm1.CommPort = 3
MSComm1.Settings = "4800,n,8,1"
MSComm1.PortOpen = True
End SubPrivate Sub Text1_Change()
'如何在文本框里得到仪表发送的值呢?
End Sub
OnComm 事件示例
下例说明如何处理通讯错误和事件。可以在相关的 Case 语句之后插入代码来处理特定的错误或事件。Private Sub MSComm_OnComm ()
Select Case MSComm1.CommEvent
' Handle each event or error by placing
' code below each case statement' 错误
Case comEventBreak ' 收到 Break。
Case comEventCDTO ' CD (RLSD) 超时。
Case comEventCTSTO ' CTS Timeout。
Case comEventDSRTO ' DSR Timeout。
Case comEventFrame ' Framing Error
Case comEventOverrun '数据丢失。
Case comEventRxOver'接收缓冲区溢出。
Case comEventRxParity' Parity 错误。
Case comEventTxFull '传输缓冲区已满。
Case comEventDCB '获取 DCB] 时意外错误 ' 事件
Case comEvCD ' CD 线状态变化。
Case comEvCTS ' CTS 线状态变化。
Case comEvDSR ' DSR 线状态变化。
Case comEvRing ' Ring Indicator 变化。
Case comEvReceive ' 收到 RThreshold # of
chars.
Case comEvSend ' 传输缓冲区有 Sthreshold 个字符 '
'
Case comEvEof ' 输入数据流中发现 EOF 字符
'
End Select
End SubInput 属性示例
该例子说明如何从接收缓冲区读取数据。Private Sub Command1_Click()
Dim InString as String
' 读取所有可用数据。
MSComm1.InputLen = 0' 检查数据。
If MSComm1.InBufferCount Then
' Read data.
InString = MSComm1.Input
End If
End SubMSComm 控件示例
下面这个简单的例子演示了用调制解调器进行基本的串行通讯:Private Sub Form_Load ()
' 保存输入子串的缓冲区
Dim Instring As String
' 使用 COM1。
MSComm1.CommPort = 1
' 9600 波特,无奇偶校验,8 位数据,一个停止位。
MSComm1.Settings = "9600,N,8,1"
' 当输入占用时,
' 告诉控件读入整个缓冲区。
MSComm1.InputLen = 0
' 打开端口。
MSComm1.PortOpen = True
' 将 attention 命令送到调制解调器。
MSComm1.Output = "ATV1Q0" & Chr$(13) ' 确保
' 调制解调器以"OK"响应。
' 等待数据返回到串行端口。
Do
DoEvents
Buffer$ = Buffer$ & MSComm1.Input
Loop Until InStr(Buffer$, "OK" & vbCRLF)
' 从串行端口读 "OK" 响应。 ' 关闭串行端口。
MSComm1.PortOpen = False
End Sub注意 MSComm 控件可以采用轮询或事件驱动的方法从端口获取数据。这个简单的例子使用了轮询方法。关于事件驱动方法的例子请参阅 OnComm 事件的帮助。