打印

喜欢串口辅助调试的进(8月19日《串口猎人》V31发布在484楼)

[复制链接]
楼主: 程序匠人
手机看帖
扫描二维码
随时随地手机跟帖
21
coody| | 2011-5-31 23:33 | 只看该作者 回帖奖励 |倒序浏览
简单的就定义一些字符做命令,副点的,我用MODBUS-RTU

使用特权

评论回复
22
idterminator| | 2011-6-1 07:57 | 只看该作者
呵呵,一直用的就是串口调试
协议采用变种的645规约
发送帧
【前导符】-帧头(1)-地址(1)-命令字(1)-【数据长度】-数据-校验(1)-结束符,允许联网和广播,
返回帧
同上,区别在于命令字,通讯异常则命令字为固定代码,数据位返回错误类型

使用特权

评论回复
23
mytempid| | 2011-6-1 08:17 | 只看该作者
直接字符串输入,字符串比较后应答

类似DOS的command环境

使用特权

评论回复
24
t.jm| | 2011-6-1 08:41 | 只看该作者
呵呵,做得不错,顺便问一下,PC机上用什么软件开发的,做得功能蛮全的嘛。
古道热肠 发表于 2011-5-31 22:48

一看就是VB,匠人恒心不错,以前想用DELPHI编一个这样的程序,功能没完善起来就不想做下去了。隔一段时间不编程序又慢慢地会忘记,现在都用的没以前熟了。

使用特权

评论回复
25
xwj| | 2011-6-1 08:47 | 只看该作者
哈哈,不管是B,还是C,都要墙裂帮顶!

啥都别说了,赶快发源码吧:lol

使用特权

评论回复
26
程序匠人|  楼主 | 2011-6-1 08:50 | 只看该作者
哈哈,不管是B,还是C,都要墙裂帮顶!

啥都别说了,赶快发源码吧:lol
xwj 发表于 2011-6-1 08:47


这个东西开源的意义不大。一堆垃圾代码,除了我自己没人看得懂。呵呵。
不过,可以考虑等做完了把这个工具共享给大家。

使用特权

评论回复
27
batsong| | 2011-6-1 09:00 | 只看该作者
类似用modbus中的0x03指令帧就够了,工控用的组态软件和PLC之间就是这么做的

使用特权

评论回复
28
dsssdy| | 2011-6-1 09:04 | 只看该作者
:)呵呵,做得不错,顺便问一下,PC机上用什么软件开发的,做得功能蛮全的嘛。

使用特权

评论回复
29
程序匠人|  楼主 | 2011-6-1 09:07 | 只看该作者
:)呵呵,做得不错,顺便问一下,PC机上用什么软件开发的,做得功能蛮全的嘛。
dsssdy 发表于 2011-6-1 09:04


你是属八哥的还是属鹦鹉的?

使用特权

评论回复
30
lxyppc| | 2011-6-1 09:11 | 只看该作者
我用串口一般有两种用法
1。数据监测,就是实时显示发上来的数据,如匠人现在做的一样
2。用作Linux系统的命令行界面。 像TeraCom一样

第一种用法时,数据各类繁多,有符号的,无符号的,标志,长度各不相同,物理意义也各不相同。我觉得不要限制数据的格式,将软件做成开发式的,用脚本来描述数据的结构和类型。
第二种用法时,有时候会输入很多的命令完成一些重复的功能,也可以通过脚本来实现自动发送命令
希望能有一个支持脚本的串口调试工具

使用特权

评论回复
31
原野之狼| | 2011-6-1 09:15 | 只看该作者
匠人用的波形绘制模块是收费的库吧~ 还是您搞到了**的版本?

使用特权

评论回复
32
123jj| | 2011-6-1 09:25 | 只看该作者
哈哈,不管是B,还是C,都要墙裂帮顶!

但是,俺只要A (ASM) , 匠人快快开源,啥都别说了,赶快发 0 和 1 吧~~~ :lol

使用特权

评论回复
33
精益求精| | 2011-6-1 09:29 | 只看该作者
等待共享 匠人的串口调试软件。

使用特权

评论回复
34
精益求精| | 2011-6-1 09:33 | 只看该作者
11# NE5532
0X55干扰了,还是0X55吗?

谢谢。道理应该是一样的。

使用特权

评论回复
35
jack_shine| | 2011-6-1 10:29 | 只看该作者
31# 原野之狼 一个定时器,加图形绘制命令应该可以实现,难道还有更高级的?

使用特权

评论回复
36
原野之狼| | 2011-6-1 10:45 | 只看该作者
31# 原野之狼  一个定时器,加图形绘制命令应该可以实现,难道还有更高级的?
jack_shine 发表于 2011-6-1 10:29

要实现流畅刷新 以及需要处理大量数据时 技术的难点就体现出来了

使用特权

评论回复
37
caner_hn| | 2011-6-1 10:46 | 只看该作者
我认为用0xFF做包头的好处是热插拔串口时更容易同步.用0x55/0xAA意义一样.

Apple的IPOD/IPHONE/IPAD的扩展口的通讯协议就是用0xFF,0x55开头.

平时要求简单时用AccessPort,因为可以调整窗口宽度进而调整显示数据长度.
要求双向通讯或保存数据时用SecureCRT.
特殊要求自己用VC编程序.

我觉得最重要的功能是把数据保存进文件里.
因为有时候出错需要等待1小时甚至1天或1周,保存进文件后就可以用Uedit翻出来慢慢查找错误.

使用特权

评论回复
38
adams.gh| | 2011-6-1 10:52 | 只看该作者
本帖最后由 adams.gh 于 2011-6-1 10:55 编辑

。。。

使用特权

评论回复
39
gongxd126com| | 2011-6-1 11:22 | 只看该作者
55 AA+ 长度+ 数据+校验
状态机解析 超级稳定

使用特权

评论回复
40
gongxd126com| | 2011-6-1 11:23 | 只看该作者
Private Sub MSComm1_OnComm()
Dim Inbyte() As Byte
Dim i As Integer
Dim Chksum As Integer
Dim PackageLeng As Long
    Select Case MSComm1.CommEvent
            
        Case comEvReceive
            Inbyte = MSComm1.Input
            PackageLeng = UBound(Inbyte) - LBound(Inbyte) + 1
            CopyMemory RePackBuff(0), Inbyte(0), PackageLeng
            PackageLeng = PackageLeng - 1
            SepratePack PackageLeng
            
            Option1.Value = Not Option1.Value
    End Select

End Sub
Private Sub SepratePack(PLeng As Long)
Dim SBUF As Byte
Dim i As Long
   
   
    For i = 0 To PLeng
        
        SBUF = RePackBuff(i)
        
        Select Case RevState
               
                '//等待接收第一个同步头0x55
            Case revhead1:
                If SBUF = &H55 Then
                    RevState = revhead2
                End If
               
                '//等待接收第二个同步头0xAA
            Case revhead2:
                If SBUF = &HAA Then
                    RevState = revpakagelen
                Else
                    
                    If SBUF <> &H55 Then
                        RevState = revhead1 ';//状态机复位
                    End If
                End If
               
                '//等待接收数据包长度
            Case revpakagelen:
                Revlen = SBUF
                If Revlen > revbufflen Then
                    
                    RevState = revhead1 ';//状态机复位
                    
                Else
                    
                    CheckSum = 0
                    CheckSum = CheckSum + SBUF
                    RevPtr = 0 ';  //接收指针复位
                    ComState = Com_reving '; //准备接收数据
                    RevState = revpakage
                End If
               
                '//等待接收数据内容
            Case revpakage:
                '存在接收缓冲区
                ReBuff(RevPtr) = SBUF
               
                RevPtr = RevPtr + 1
                CheckSum = CheckSum + SBUF
               
                If RevPtr = Revlen Then
                    RevState = revcrc
                End If
               
               
                '//等待接收校验和
            Case revcrc:
                '取256的模数
                CheckSum = CheckSum Mod 256
                If CheckSum = SBUF Then
                    
                    ComState = Com_revOK ';//接收正确
                    
                Else
                    ComState = Com_revCRCErr ';//接收错误
                    
                End If
                RevState = revhead1 ';//状态机复位
        End Select
        
       If ComState = Com_revOK Then ';//接收正确
        '处理串口接收的数据
        Call ProcessRevData(Revlen)
        ComState = Com_noreving '======================================================================谨记此句
    End If
         
        
        
    Next
   
   

   
   
   
End Sub

使用特权

评论回复
评分
参与人数 2威望 +7 收起 理由
z1yxyq2008 + 1 很给力!
程序匠人 + 6
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则