串口编程我也不是很懂,但是可以跟你一起研究一下!
关于你说:我怎么时时对数据进行读取,而且把数据进行解析,提取火警信息呢? 把MSComm1的串口打开~当收到数据时硬件内部会产生一个中断,这样一来我们就知道有数据来,调用相关过程提取火警信息。
通过这个协议我的MSCOMM控件能够接受到什么类型的数据是60进制的吗?
我们从串口接收到的都是2进制数据,既0、1。波特率为1200既每秒传1200个0和1。只要双方约定好对应数据代表的含意我们就可以对收到的数据进行处理!所以说你项目最重要的是双方协议好数据的字段和所代表的含义!
关于你说:我怎么时时对数据进行读取,而且把数据进行解析,提取火警信息呢? 把MSComm1的串口打开~当收到数据时硬件内部会产生一个中断,这样一来我们就知道有数据来,调用相关过程提取火警信息。
通过这个协议我的MSCOMM控件能够接受到什么类型的数据是60进制的吗?
我们从串口接收到的都是2进制数据,既0、1。波特率为1200既每秒传1200个0和1。只要双方约定好对应数据代表的含意我们就可以对收到的数据进行处理!所以说你项目最重要的是双方协议好数据的字段和所代表的含义!
解决方案 »
- 本人的视频小站刚刚诞生,望各位战友多多光临!
- 怎么让鼠标指针到标签时,标签的文字颜色改变呀,指针挪走后颜色再变回原来的颜色呀?急!!请高手们指教!!谢谢
- 数据库更新问题。
- 如何在VB中转换多字节字符为Unicode????急急急
- 他爷爷的,急啊!
- 急!!在线等待!如何使DTPicker控件在每次运行时,都显示的是当天日期,而不是创建控件那天的日期!
- 哪里有VB6.0英文版下载呀??谢谢各位大哥!
- 用vb6如何做类似exe捆绑文件?
- 一个复杂排序问题请大虾帮助,急!
- 要做一个类似acdsee右边的图片浏览器,需要什么控件
- 请教一个问题!
- 有朋友要我做帮忙做 卡拉OK厅 的 点歌系统。我对这系统的原理一点都不熟,请大家帮忙!!
只要协议约定好,按照格式发数据下去,接受回来的数据要转化成
你想要的格式。
Dim strIn
Dim a, i, j As Integer
Dim TempNumber(10) As String
Dim CardLen As Integer
'如果不是返回 值事件退出
If MSComm1.CommEvent <> 2 Then
Exit Sub
End If
strIn = MSComm1.Input
i = UBound(strIn)
Select Case MSComm1.CommEvent
Case comEvReceive
For j = 1 To i
If strIn(a) = "HD" Then
CardLen = 0
Exit For
End If
TempNumber(CardLen) = Hex(strIn(a))
SBar.Panels(2).Text = SBar.Panels(2).Text & Hex(strIn(a)) & " "
CardLen = CardLen + 1
Next j
'处理划卡
Case comEvSend
...
Case comEvRing
...
End Select
End Sub
逻辑上讲应该比较简单,但真正实现起来又不知怎么对要接受的数据格式进行设置及我通过接口得到的是什么数据,这样我好处理......所以我想最好有这方面的例子,这样我会理解的快些~
逻辑上讲应该比较简单,但真正实现起来又不知怎么对要接受的数据格式进行设置及我通过接口得到的是什么数据,这样我好处理......所以我想最好有这方面的例子,这样我会理解的快些~
Dim buf As Variant
Dim inbuf As Variant
Dim outbuf As Variant
Dim i, j, k As Integer
Private Sub Command1_Click()
buf = Chr(&H1B) & Chr(&H30)
MSComm1.Output = buf & vbCr
End Sub
Private Sub Command2_Click()
buf = Chr(&H1B) & Chr(&H65)
outbuf = Chr(&H1B) & Chr(&H79)
MSComm1.Output = buf & vbCr
inbuf = Trim(MSComm1.Input)
If Len(inbuf) = 0 Then
Text1.Text = "0"
Else
If inbuf = outbuf Then
Text2.Text = "成功"
Else
Text1.Text = "3"
End If
Text3.Text = "3"
End If
'inbuf = MSComm1.Input
'outbuf =inbuf
'For j = 1 To 10
'If inbuf = Chr(&H1B) & Chr(&H79) Then
'MsgBox ("!")
'Exit For
'End If
'Next j
End Sub
Private Sub Command4_Click()
inbuf = Chr$(&H1B) & Chr$(&H5D)
MSComm1.Output = inbuf & vbCr
End Sub
Private Sub Form_Load()
MSComm1.PortOpen = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub
Private Sub Form_Load()
MSComm1.PortOpen = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub
至于相应回来的数据是什么格式,我现在还没有弄得很明白~嘿嘿~
但是Private Sub Command2_Click()
buf = Chr(&H1B) & Chr(&H65)
outbuf = Chr(&H1B) & Chr(&H79)
MSComm1.Output = buf & vbCr
inbuf = Trim(MSComm1.Input)
If Len(inbuf) = 0 Then
Text1.Text = "0"
Else
If inbuf = outbuf Then
Text2.Text = "成功"
Else
Text1.Text = "3"
End If
Text3.Text = "3"
End If
却是成功了!这是测试通讯的,你参考一下吧~
我同学说,数据收取需要一个循环,因为缓冲区里的数据是一段一段的,
如果你弄明白了~一定告诉我怎么弄得阿!!!!!
我得email [email protected]
你需要的结果其实挺麻烦的!也许是我找不到更好的方法!因为你数据库在两台机器上。所有的表结构都相同。我建议你外出的笔记本不要更新基本资料表!只能变动日常业务单据表!然后建立一个相互更新的文件。每次两台机器相互更新就追加更新时间到文件中!
更新的思路如下:首先判断当前时间与更新文件最后一次更新时间。如果当前时间大则把上次更新时间后的记录追加(Insert)到业务单据表中。可以先把笔记本的追加到台式机,然后在把台式机的整个数据库覆盖笔记本的数据库。