各位好,请教个问题.我现在想PC机上利用USB端口进行两个程序之间的通信。也就是有A,B两个程序,A程序负责向USB端口发送数据,B程序负责从USB端口接收数据。这样如何实现?谢谢大家,这个需要研究USB通信协议么?还有一个LibUsbDotNet的控件可以实现这个功能么?

解决方案 »

  1.   

    http://www.baidu.com/s?bs=C%23%B6%C1%C8%A1USB&f=8&rsv_bp=1&rsv_spt=3&wd=C%23+USB&inputT=1913
    http://wenku.baidu.com/view/e92c3062caaedd3383c4d3ae.html希望对你有用,我也不是太懂
      

  2.   

    这样貌似没太大的意义。
    USB是主机端和设备端相连的方式,而一般现在的电脑主板上的USB都是主机端。这样要实现直连,就要买转接设备
    例如现在市面上的USB Link电缆,但一般都配有其自带的软件程序,也用不着第三方的如果真要做,USB协议是要了解的,但不需要太深入,基本概念有就行了。至于LibUsbDotNet,应该会有用,但不会说直接用它就搞的定了
      

  3.   

    USB端口只是一个接口吧,没实例化能用吗?
      

  4.   

    USB 有主从之分,不能直接互联的。
      

  5.   

    依你的說法,你的設備只有一台對不,
    若是,你可以先試試一個USB就可以做收送的功能了
    你可以先試試將USB的2,3埠做個回路
    再用以下的方式接收:
    private void SerialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    {
    int mSize = this.SerialPort1.BytesToRead;

    SerialPort1.Read(mRecvByte, 0, mSize);
    BeginInvoke(new EventHandler(ONMLoadA), SerialPort1.BytesToRead());
    //使用委托方式显示接收到的字符串
    }以下的方式為送值
    private void Button2_Click(System.Object sender, System.EventArgs e)
    {
    byte[] bytHex = null;
    bytHex = new byte[(Strings.Len(Hexsj) / 2)];
    int i = 0;
    for (i = 1; i <= Strings.Len(Hexsj); i += 2) {
    bytHex[(i - 1) / 2] = Conversion.Val("&H" + Strings.Mid(Hexsj, i, 2));
    }
    SerialPort1.Write(bytHex, 0, bytHex.Length);
    }
    你試試吧