MSCOMM1与单片机通讯,怎么接收单片机发送的数据。

databing 2008-10-29 10:35:48
下位机向上位机发送一个温度值,怎么吧它接收并显示出来。
...全文
157 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
alan001 2008-11-06
  • 打赏
  • 举报
回复
先发一个引导头,如"55 aa "
you_123 2008-11-06
  • 打赏
  • 举报
回复
好好学习一下
hwmys 2008-10-29
  • 打赏
  • 举报
回复
下面这个简单的例子演示了用调制解调器进行基本的串行通讯:

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 事件的帮助。
hwmys 2008-10-29
  • 打赏
  • 举报
回复
问题范围太大了,建议参考VB的MSComm控件说明
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case 2
inPutByte = MSComm1.Input
Case 7
MyErr = "结束"
Case 6
MyErr = "检测到振铃信号。一些 UART(通用异步接收— 传输)可能不支持该事件。"
Case 5
MyErr = "Carrier Detect 线的状态发生变化。"
Case 4
MyErr = "Data Set Ready 线的状态发生变化。该事件只在 DST 从 1 变到 0 时才发生。"

Case 3
MyErr = "Clear To Send 线的状态发生变化。"
Case 1
MyErr = "在传输缓冲区中有比 Sthreshold 数少的字符。"

Case 1001
MyErr = "接收到一个中断信号。"
Case 1002
MyErr = "Clear To Send 超时。在系统规定时间内传输一个字符时,Clear To Send 线为低电平。"
Case 1003
MyErr = "Data Set Ready 超时。在系统规定时间内传输一个字符时,Data Set Ready 线为低电平。"
Case 1004
MyErr = "帧错误。硬件检测到一帧错误。"
Case 1006
MyErr = "端口超速。没有在下一个字符到达之前从硬件读取字符,该字符丢失。"
Case 1007
MyErr = "载波检测超时。在系统规定时间内传输一个字符时,Carrier Detect 线为低电平。Carrier Detect 也称为 Receive Line Signal Detect (RLSD)。"
Case 1008
MyErr = "接受缓冲区溢出。接收缓冲区没有空间。"
Case 1009
MyErr = "奇偶校验。硬件检测到奇偶校验错误"
Case 1010
MyErr = "传输缓冲区已满。传输字符时传输缓冲区已满"
Case 1011
MyErr = "检索端口的设备控制块 (DCB) 时的意外错误 "
Case Else
MyErr = "串口错误提示代码:" & Format(MSComm1.CommEvent)
End Select

End Sub

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧