我想请问有谁做过串口通信,然后把接收的数据处理成指定格式存入access数据库中。我有个大体的思路可是具体的还想请高手帮一下忙!
    1 我想用VB中的MSCOMM控件来接收串口的数据----》这部分的编程我不知道到底怎么调试呢,我没看到过相关程序自己也不知道程序编的对不对,怎么办?
    2 把接收到的数据处理一下----》这个过程是不是可以直接用if...then ..等   VB的语言编写可以完成了吗?
    3 把数据存入access库的表中是不是直接用  insert  into  就可以写入了吗? 
    我翻了不少书,可是没有看到详细一点的部分,由于我的工作要到期了,我真急得一头的汗,我想请做过类似项目的的高手指点指点!
    如果可以的话我希望能发点相关程序让我看看,参考参考。非常感谢!
     我 的email:hanyuxia2000·163。com。
     急切盼望能得到你的帮助!!

解决方案 »

  1.   

    [email protected]
    我不是高手,只是前段时间做过串口方面的程序.
      

  2.   

    不行啊,我看不了!!!
    [email protected]
      

  3.   

    你的问题不清楚,
    1 你写的串口通讯程序很什么打交道,是不是工控仪器还是工控机,或者别人的C或汇编程序。
    2 你的数据是不是十分重要,不允许丢失,通讯的协议是不是别人定的,还是自己定的。错误检测是不是自己做。
    3 实时性是不是很重要,数据的格式是不是固定的,还是可变的。你是做上层处理软件还是要提供给别人使用。
    4 以上很多因素都决定你是用查询方式,还是事件方式编写程序,决定你的程序的流程如何工作。
    我写过一些这方面的程序,不过你要很短的时间内做一个很灵活,数据格式变化很大,自定义
    协议,自己处理重发的程序恐怕比较难。如果你的数据格式相对比较固定,可以丢失数据,不考虑错误处理(其实错误和丢失都很少见),比较简单一些。
    如果你用查询方式做,可以做成这种:
        lngStartTime = GetTimeCount()
        lngPassTime = 0
        while (lngPassTime < 2000)
        {
            接收数据的具体过程
            lngPassTime = GetTimeCount() - lngStartTime
        }
    根据接收的返回值是否正确,决定是否加入数据库。
    在加入数据库时可引用数据库对象,在引用中加入 ADO2.5的支持。
        打开一个数据库表cn,打开一个连接rs,
        然后用 rs.addnew
               rs("**") = **
               rs.update
    添加数据。
       建议看书,可以照书上的做。
      

  4.   

    1 我的串口通讯程序和单片机的串口打交道,别人用汇编写单片机部分的程序,我来在计算机上接收。因为我接收的是一批数据,实时性要求应该不高,但数据还是不能丢的。
        2   通讯的协议和错误检测是不是自己定的,暂定为一帧固定长度的数据格式,如果有好的建议还可以再商量。
        3  我想刚开始我能作出来,能实现功能就行,暂时不要求很灵活。
        很希望做过这个的高手能发点资料让我看看,另外你所说看的书是什么资料,我没找到很对口的
    书。
        急!  
         [email protected]
      

  5.   

    我给你发的第二个看到没有啊.
    你的第二个问题:协议和错误检测是自己来定义,对于单片机发来的桢,要你来解析.我做的是通过CRC校验来检测.你可以在你的程序中用一个定时器来检测串口,一有数据了就接收近来,然后分析.
    你可以看看visual basic与RS-232串行通信控制(最新版),中国青年出版社.
    有盘有实例.盘我没带.等回去帮你找找.你在哪个城市?
    如果是北京海淀图书城有买的上周六我还看见了.
      

  6.   

    下面是一个大体过程,注意此过程并没有用到mscomm的数据接收事件
    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