问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

VB串口发送接收

发布网友 发布时间:2023-07-16 01:40

我来回答

3个回答

热心网友 时间:2024-08-23 13:43

LZ的代码错在:

Dim send(4) As Byte

它定义的Byte数组有5个元素,所以单片机不返回数据。应该改为:

Private Sub Command1_Click() '发送HEX数据93 93 93 93

    Dim send(3) As Byte

    send(0) = "&H93"

    send(1) = "&H93"

    send(2) = "&H93"

    send(3) = "&H93"

    MSComm1.Output = send

End Sub

这样才发送4字节指令,此外从MSComm1.RThreshold = 34看是设置接收字节长度为34字节。


以下修改了LZde1代码,供参考:

Option Explicit
    Dim strdata
Private Sub Command1_Click() '发送HEX数据93 93 93 93
    Dim send(3) As Byte
    send(0) = "&H93"
    send(1) = "&H93"
    send(2) = "&H93"
    send(3) = "&H93"
    MSComm1.Output = send
End Sub

Private Sub Form_Load()
    '串口初始化
    MSComm1.Settings = "9600,n,8,1"
    MSComm1.InputLen = 0
    MSComm1.InputMode = comInputModeBinary
    MSComm1.InBufferSize = 1024
    MSComm1.OutBufferSize = 512
    MSComm1.RThreshold = 34 '设置接收字节长度
    MSComm1.InBufferCount = 0
    MSComm1.OutBufferCount = 0
    MSComm1.CommPort = 1 '串口号
    MSComm1.PortOpen = True
    Timer1.Interval = 0
End Sub

Private Sub MSComm1_OnComm()
    Dim i As Long
    Dim strBuff As String
    Dim strdata As String
    Dim str() As Byte
    Select Case MSComm1.CommEvent
        Case comEvReceive
        strBuff = MSComm1.Input
        str() = strBuff
        For i = 0 To UBound(str)    '接收16进制数据
        If Len(Hex(str(i))) = 1 Then
            strdata = strdata & "0" & Hex(str(i))
        Else
            strdata = strdata & Hex(str(i))
        End If
        Next
        Text1.Text = strdata
        Call Timer1_Timer
    End Select
End Sub

Private Sub Timer1_Timer()
    strdata = ""
    MSComm1.InBufferCount = 0
End Sub

热心网友 时间:2024-08-23 13:43

修改这里。。。

Private Sub MSComm1_OnComm()
Dim strBuff As String
Dim strdata As String
Dim str() As Byte

Select Case MSComm1.CommEvent
Case comEvReceive
strBuff = MSComm1.Input
str() = strBuf
在这里添加接收字符长度的判断,长度够了再接收。处理。。
For i = 0 To UBound(str) '接收16进制数据
If Len(Hex(str(i))) = 1 Then
strdata = strdata & "0" & Hex(str(i))
Else
strdata = strdata & Hex(str(i))
End If
Next

热心网友 时间:2024-08-23 13:44

你简单的个通讯给你写的这么复杂。
你直接发送output
然后等待50ms最少
直接input就OK了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
家政服务阿姨是做什么的? 中央空调水滴图标是什么模式? 和EXO有关(字)的头像3张, 真的没人要么 exo这几个字母头像组合的头像 有没有EX0成员穿有EXO字的衣服的图片,和我头像一样的,越多越好! 为什么工商办卡要证明 亲子阅读的优缺点是什么? 馒头冬天放在室外存放 宝宝2 岁半说话结巴,宝宝结巴怎么纠正? 宝宝讲话口齿不清怎么办 70万定期1年利息多少钱? 鸟吃胡萝卜英能中毒吗 牛奶冰硬后在化成水还能喝吗 买来避暑的冰冻大冰块能,化成水能喝吗 未打开的冰水放入水中化成水后可以喝吗 黑鲨4pro屏幕刷新率是多少 gta5埃普西隆教堂位置 gta5埃普西隆不触发 gta5EF埃普西隆任务怎么过 gta5埃普西隆传单有什么用 gta5埃普西隆任务结局 《侠盗猎车手5》埃普西隆教任务五辆豪车停放位置 重庆市铁路中学校录取分数线 如果拿刀子在每根手指头上小划一刀,会有多疼呢,都说十指连心,我想试... 怎样在手上划出伤口 自己左手撑心划着一刀像什么动物 卫星通讯怎么加好友? 老板给我转账,我怎么回复? 绝命毒师中哪集能看到完整的用化学仪器煮咖啡的场面? 圆明园的毁灭视频导入的必要性 越来越无法接受男朋友的儿子,我该放弃吗? ...怎么把接收到的数据通过单片机的CAN口发送出去啊? 无法接受与面对男朋友有个儿子这个事实,可是也不愿离开他,该怎么办才... 和男友特别相爱,可接受不了他的孩子怎么办? 男朋友有一个小孩可我接受不了他的小孩怎么办 男朋友未婚有一个儿子,我该无条件接受他吗? 我爱上了一个有两个孩子的男人,但是有点接受不了他两个孩子,我该怎么办... 单纯的诗句 单纯的诗句是什么 鹅鸭杀炸弹倒计时开会会怎样 鹅鸭杀炸弹狼几秒响 鸭鹅杀炸弹王时间 鹅鸭杀炸弹多少秒显示 张韶涵几岁出道的? 张韶涵的嗓音辨识度极高,她最初是如何进入娱乐圈的? 爆炸王怎么玩 鹅鸭杀爆炸王玩法技巧分享爆炸王怎么玩 532624开头的身份证是哪里的 532624是哪里的身份证号码 ...设计效果图:房子大约90平,起了一层了,想起两层就好,怎样盖更好... GBA火焰之纹章圣魔之光石修女转哪2种