我想请问有谁做过串口通信,然后把接收的数据处理成指定格式存入access数据库中。我有个大体的思路可是具体的还想请高手帮一下忙!
1 我想用VB中的MSCOMM控件来接收串口的数据----》这部分的编程我不知道到底怎么调试呢,我没看到过相关程序自己也不知道程序编的对不对,怎么办?
2 把接收到的数据处理一下----》这个过程是不是可以直接用if...then ..等 VB的语言编写可以完成了吗?
3 把数据存入access库的表中是不是直接用 insert into 就可以写入了吗?
我翻了不少书,可是没有看到详细一点的部分,由于我的工作要到期了,我真急得一头的汗,我想请做过类似项目的的高手指点指点!
如果可以的话我希望能发点相关程序让我看看,参考参考。非常感谢!
我 的email:hanyuxia2000·163。com。
急切盼望能得到你的帮助!!
1 我想用VB中的MSCOMM控件来接收串口的数据----》这部分的编程我不知道到底怎么调试呢,我没看到过相关程序自己也不知道程序编的对不对,怎么办?
2 把接收到的数据处理一下----》这个过程是不是可以直接用if...then ..等 VB的语言编写可以完成了吗?
3 把数据存入access库的表中是不是直接用 insert into 就可以写入了吗?
我翻了不少书,可是没有看到详细一点的部分,由于我的工作要到期了,我真急得一头的汗,我想请做过类似项目的的高手指点指点!
如果可以的话我希望能发点相关程序让我看看,参考参考。非常感谢!
我 的email:hanyuxia2000·163。com。
急切盼望能得到你的帮助!!
解决方案 »
- 如果用VB获取对话框的内容,,,求救~~!!!
- 求教一API函数RegEnumValue的问题
- 高分求解SmartXpButton.ocx控件问题
- 对象`Cells`的方法`_Global`失败
- VB中用ADO控件连接 ACCESS文件的密码问题
- 急!关于INET控件使用的问题?
- 关于MSHFLEXGRID点击的问题,高手快来~~~~~~~
- VB这是怎么搞的,有什么方法或是其它的函数吗?val("0.15")=.15
- 请问你的那个问题是怎么解决的呢,我也遇到同样的问题了:VB中调用MATLAB为什么运行时说“DDE初始化时无外部应用程序响应”?谢谢啦
- 请问SQL数据库备份文件的后缀名是什么??各位大虾请近!!!
- 谁来帮帮我?
- 关于mscomm控件的问题
我不是高手,只是前段时间做过串口方面的程序.
[email protected]
1 你写的串口通讯程序很什么打交道,是不是工控仪器还是工控机,或者别人的C或汇编程序。
2 你的数据是不是十分重要,不允许丢失,通讯的协议是不是别人定的,还是自己定的。错误检测是不是自己做。
3 实时性是不是很重要,数据的格式是不是固定的,还是可变的。你是做上层处理软件还是要提供给别人使用。
4 以上很多因素都决定你是用查询方式,还是事件方式编写程序,决定你的程序的流程如何工作。
我写过一些这方面的程序,不过你要很短的时间内做一个很灵活,数据格式变化很大,自定义
协议,自己处理重发的程序恐怕比较难。如果你的数据格式相对比较固定,可以丢失数据,不考虑错误处理(其实错误和丢失都很少见),比较简单一些。
如果你用查询方式做,可以做成这种:
lngStartTime = GetTimeCount()
lngPassTime = 0
while (lngPassTime < 2000)
{
接收数据的具体过程
lngPassTime = GetTimeCount() - lngStartTime
}
根据接收的返回值是否正确,决定是否加入数据库。
在加入数据库时可引用数据库对象,在引用中加入 ADO2.5的支持。
打开一个数据库表cn,打开一个连接rs,
然后用 rs.addnew
rs("**") = **
rs.update
添加数据。
建议看书,可以照书上的做。
2 通讯的协议和错误检测是不是自己定的,暂定为一帧固定长度的数据格式,如果有好的建议还可以再商量。
3 我想刚开始我能作出来,能实现功能就行,暂时不要求很灵活。
很希望做过这个的高手能发点资料让我看看,另外你所说看的书是什么资料,我没找到很对口的
书。
急!
[email protected]
你的第二个问题:协议和错误检测是自己来定义,对于单片机发来的桢,要你来解析.我做的是通过CRC校验来检测.你可以在你的程序中用一个定时器来检测串口,一有数据了就接收近来,然后分析.
你可以看看visual basic与RS-232串行通信控制(最新版),中国青年出版社.
有盘有实例.盘我没带.等回去帮你找找.你在哪个城市?
如果是北京海淀图书城有买的上周六我还看见了.
if 开始接收 then '''可以是手动点击按钮开始接收,也可以是时钟控制自动接收
'''' 数据接收
dim buf() as byte '''保存mscomm缓冲区内的数据
mscomm.output=发送接收请求
Do '''因为是定长数据帧,可以判断mscomm的inbuffercount是否等于帧长来判断是否
'''数据到达
Loop Until mscomm.InBufferCount = 帧长
buf = .Input '''将接收到的数据存入数组
For q = LBound(buf) To UBound(buf)
''''将数组的数据进行转化,可以保存在STRING中
Next q
if 数据校验为True then
''''依据帧格式依次将其中的数据提出,处理,然后保存到数据库
''''数据保存到数据库随便用什么方法都行,可以是SQL语句,也可以用recordset.addnew
endif
endif