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