coody 发表于 2011-5-31 23:33

简单的就定义一些字符做命令,副点的,我用MODBUS-RTU

idterminator 发表于 2011-6-1 07:57

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

mytempid 发表于 2011-6-1 08:17

直接字符串输入,字符串比较后应答

类似DOS的command环境

t.jm 发表于 2011-6-1 08:41

呵呵,做得不错,顺便问一下,PC机上用什么软件开发的,做得功能蛮全的嘛。
古道热肠 发表于 2011-5-31 22:48 https://bbs.21ic.com/images/common/back.gif
一看就是VB,匠人恒心不错,以前想用DELPHI编一个这样的程序,功能没完善起来就不想做下去了。隔一段时间不编程序又慢慢地会忘记,现在都用的没以前熟了。

xwj 发表于 2011-6-1 08:47

哈哈,不管是B,还是C,都要墙裂帮顶!

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

程序匠人 发表于 2011-6-1 08:50

哈哈,不管是B,还是C,都要墙裂帮顶!

啥都别说了,赶快发源码吧:lol
xwj 发表于 2011-6-1 08:47 https://bbs.21ic.com/images/common/back.gif

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

batsong 发表于 2011-6-1 09:00

类似用modbus中的0x03指令帧就够了,工控用的组态软件和PLC之间就是这么做的

dsssdy 发表于 2011-6-1 09:04

:)呵呵,做得不错,顺便问一下,PC机上用什么软件开发的,做得功能蛮全的嘛。

程序匠人 发表于 2011-6-1 09:07

:)呵呵,做得不错,顺便问一下,PC机上用什么软件开发的,做得功能蛮全的嘛。
dsssdy 发表于 2011-6-1 09:04 https://bbs.21ic.com/images/common/back.gif

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

lxyppc 发表于 2011-6-1 09:11

我用串口一般有两种用法
1。数据监测,就是实时显示发上来的数据,如匠人现在做的一样
2。用作Linux系统的命令行界面。 像TeraCom一样

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

原野之狼 发表于 2011-6-1 09:15

匠人用的波形绘制模块是收费的库吧~ 还是您搞到了**的版本?

123jj 发表于 2011-6-1 09:25

哈哈,不管是B,还是C,都要墙裂帮顶!

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

精益求精 发表于 2011-6-1 09:29

等待共享 匠人的串口调试软件。

精益求精 发表于 2011-6-1 09:33

11# NE5532
0X55干扰了,还是0X55吗?

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

jack_shine 发表于 2011-6-1 10:29

31# 原野之狼 一个定时器,加图形绘制命令应该可以实现,难道还有更高级的?

原野之狼 发表于 2011-6-1 10:45

31# 原野之狼一个定时器,加图形绘制命令应该可以实现,难道还有更高级的?
jack_shine 发表于 2011-6-1 10:29 https://bbs.21ic.com/images/common/back.gif
要实现流畅刷新 以及需要处理大量数据时 技术的难点就体现出来了

caner_hn 发表于 2011-6-1 10:46

我认为用0xFF做包头的好处是热插拔串口时更容易同步.用0x55/0xAA意义一样.

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

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

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

adams.gh 发表于 2011-6-1 10:52

本帖最后由 adams.gh 于 2011-6-1 10:55 编辑

。。。

gongxd126com 发表于 2011-6-1 11:22

55 AA+ 长度+ 数据+校验
状态机解析 超级稳定

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
页: 1 [2] 3 4 5 6 7 8 9 10 11
查看完整版本: 喜欢串口辅助调试的进(8月19日《串口猎人》V31发布在484楼)