日期:2014-05-18  浏览次数:20928 次

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

------解决方案--------------------
这样貌似没太大的意义。
USB是主机端和设备端相连的方式,而一般现在的电脑主板上的USB都是主机端。这样要实现直连,就要买转接设备
例如现在市面上的USB Link电缆,但一般都配有其自带的软件程序,也用不着第三方的

如果真要做,USB协议是要了解的,但不需要太深入,基本概念有就行了。至于LibUsbDotNet,应该会有用,但不会说直接用它就搞的定了
------解决方案--------------------
USB端口只是一个接口吧,没实例化能用吗?
------解决方案--------------------
不能用网线?
------解决方案--------------------
USB 有主从之分,不能直接互联的。
------解决方案--------------------
依你的說法,你的設備只有一台對不,
若是,你可以先試試一個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);
}
你試試吧