用VB开一个USB口的上位机,主要功能是读取下位机(STC89C52)采集的数据,USB芯片是pdiusbd12。
之前有用VB开发过串口的上位机,现在下位机采用USB传输了,不知道行不行?
请推荐一些资料参考
附一张框图(不知道怎么传图片)

解决方案 »

  1.   

    【分享】如何在CSDN里发图(附上传图片方法)
      

  2.   

    MSComm 控件示例
    下面这个简单的例子演示了用调制解调器进行基本的串行通讯:Private Sub Form_Load ()
       ' 保存输入子串的缓冲区
       Dim Instring As String
       ' 使用 COM1。
       MSComm1.CommPort = 1
       ' 9600 波特,无奇偶校验,8 位数据,一个停止位。
       MSComm1.Settings = "9600,N,8,1"
       ' 当输入占用时,
       ' 告诉控件读入整个缓冲区。
       MSComm1.InputLen = 0
       ' 打开端口。
       MSComm1.PortOpen = True
       ' 将 attention 命令送到调制解调器。
       MSComm1.Output = "ATV1Q0" & Chr$(13) ' 确保
       ' 调制解调器以"OK"响应。
       ' 等待数据返回到串行端口。
       Do
          DoEvents
       Buffer$ = Buffer$ & MSComm1.Input
       Loop Until InStr(Buffer$, "OK" & vbCRLF)
       ' 从串行端口读 "OK" 响应。   ' 关闭串行端口。
       MSComm1.PortOpen = False
    End Sub注意   MSComm 控件可以采用轮询或事件驱动的方法从端口获取数据。这个简单的例子使用了轮询方法。关于事件驱动方法的例子请参阅 OnComm 事件的帮助。
      

  3.   

    OnComm 事件示例
    下例说明如何处理通讯错误和事件。可以在相关的 Case 语句之后插入代码来处理特定的错误或事件。Private Sub MSComm_OnComm ()
       Select Case MSComm1.CommEvent
       ' Handle each event or error by placing 
       ' code below each case statement' 错误
          Case comEventBreak   ' 收到 Break。
           Case comEventCDTO   ' CD (RLSD) 超时。
          Case comEventCTSTO   ' CTS Timeout。
          Case comEventDSRTO   ' DSR Timeout。
          Case comEventFrame   ' Framing Error
          Case comEventOverrun   '数据丢失。
          Case comEventRxOver'接收缓冲区溢出。
          Case comEventRxParity' Parity 错误。
          Case comEventTxFull   '传输缓冲区已满。
          Case comEventDCB   '获取 DCB] 时意外错误   ' 事件
          Case comEvCD   ' CD 线状态变化。
          Case comEvCTS   ' CTS 线状态变化。
          Case comEvDSR   ' DSR 线状态变化。
          Case comEvRing   ' Ring Indicator 变化。
          Case comEvReceive   ' 收到 RThreshold # of
    chars.
          Case comEvSend   ' 传输缓冲区有 Sthreshold 个字符                     '
                         '
          Case comEvEof   ' 输入数据流中发现 EOF 字符
                         ' 
       End Select
    End Sub
      

  4.   

    如果采用D12的话,可以用HID设备通讯方式写上位机程序,这样可以省略驱动开发部分。
    如果你下位机程序搞定了,在Windows中弄HID通讯,相对简单很多,因为Windows提供
    了很多HID设备操作的API函数,首先是枚举设备,通过PID和VID来识别枚举出设备,并
    取得设备的GUID,然后就可以通过操作GUID通讯了,至于相关的API函数,通常都是 HID_ 
    开头的,你可以查阅一下这方面的资料。要说到具体,可以慢慢用一本书来讲,什么令牌呀、
    项目什么的,那就说不完了,不过可以肯定的是,VB可以实现这样的操作,而且也不复杂,
    只是效率上来说,个人感觉用VC开多线程比较好。
      

  5.   

    很感谢您的回复
    我的系统是USB传输的,不是串行传输的,MSComm是专门针对串口的,还有设置波特率。
      

  6.   


    看看 http://www.baiheee.com/Documents/090522/090522165226.htm
    有很多HID的知识是要学习的
      

  7.   

    http://group.ednchina.com/93/197.aspx
    还有这里~
    VB来做USB上位机有一定的限制,一般应用应该问题不大,我们还可以调用API来弥补。
      

  8.   

    如果是标准的HID设备规范,其实基本上可以说能调用API接口的语言都可以,
    只是个人习惯问题
      

  9.   

    一切皆有可能,不过最好使用vc做dll来访问吧。