求VB与flash通信,给串口发送信息的程序

qimangxing 2010-09-16 12:01:19
自己实在搞的头疼了,请各位高手帮忙。
用vb加载一个flash多媒体程序,flash中使用 fscommand("H888") 给vb发送信息。vb接收这个信号,经过编码加校验码以后,发给串口,以控制沙盘的LED灯。

通信协议:
RS232接口,(可以使用USB转串口扩展RS232接口)
波特率9600,8位数据位,1位停止位,无校验位

命令为ASCII码格式,6字节:
第一字节:H亮,L灭;
第二到第四字节:控制编号,这里:控制编号 = (第一列序号 - 1);
第五字节:校验码

另外全亮命令:H888F0
全灭命令:L888F4

如点亮004号地区,命令为H004DC
其中H为点亮,DC为校验码
校验码算法:0X48+0X30+0X30+0X34=0XDC,所以校验码为DC其中H的ASCII码为0X48

如点灭004号:命令为L004E0
其中H为点亮,DC为校验码
校验码算法:0X4C+0X30+0X30+0X34=0XE0

灭灯命令随时可以发,
亮灯命令要有时间间隔才能发,两个亮灯时间间隔为闪三下的时间。


我的想法,如果能做成通用的文件最好,flash只管发送信号,vb负责接收信号,发送给串口,flash文件名和大小,等参数可以通过外部文件修改。

项目时间紧迫,如果能帮做成可执行文件,并提供源代码更好,另开帖送分。
...全文
112 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
贝隆 2010-09-16
  • 打赏
  • 举报
回复
看了你的帖子,我发表一点看法:
1、VB程序不用管Flash和VB之间的数据传输吧?只需要管串口通信吧?
2、分析串口通信协议,我自己写了一个测试程序,你拿去试一试吧。


Private Declare Function GetTickCount Lib "kernel32" () As Long

Private Sub btnClose_Click()
Dim bolP As Boolean
On Error GoTo errSub
bolP = funLEDComm(mscLED, CInt(txtLEDNo.Text), "L")
Exit Sub
errSub:
End Sub

'打开LED
Private Sub btnOpen_Click()
Dim bolP As Boolean
On Error GoTo errSub
bolP = funLEDComm(mscLED, CInt(txtLEDNo.Text), "H")
Exit Sub
errSub:

End Sub

Private Sub Form_Load()
With mscLED
.CommPort = 1
.Settings = "9600,n,8,1"
.RThreshold = 0
.InBufferSize = 1024
.OutBufferSize = 100
.OutBufferCount = 0
.InputLen = 0
.InputMode = comInputModeBinary
End With
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If mscLED.PortOpen Then mscLED.PortOpen = False
End Sub
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'串口通信函数
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Private Function funLEDComm(mscP As MSComm, intLEDAdd As Integer, strLEDStatus As String) As Boolean
Dim strP As String
Dim lngP As Long
On Error GoTo errSub
strP = strLEDStatus & Right("000" & CStr(intLEDAdd), 3)
strP = strP & funCheck(strP)
If Not mscP.PortOpen Then mscP.PortOpen = True
lngP = GetTickCount
mscP.Output = strP
Exit Function
errSub:

End Function

Private Function funCheck(ByVal strP As String) As String
Dim intP As Integer
Dim lngP As Long
On Error GoTo errSub
For intP = 1 To Len(strP)
lngP = lngP + Asc(Mid(strP, intP, 1))
Next intP
funCheck = Right("00" & Hex$(lngP Mod 256), 2)
Exit Function
errSub:

End Function

getemail 2010-09-16
  • 打赏
  • 举报
回复
qimangxing 2010-09-16
  • 打赏
  • 举报
回复
老朱是哪位?论坛ID也是老朱吗?
getemail 2010-09-16
  • 打赏
  • 举报
回复
问老朱

1,451

社区成员

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

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