2012-02-16 21 views
5

USB経由で2台のPC間で通信するにはどうすればよいですか?私は、プログラムがUSBポートを介して別のプログラムにこれらの番号を示す別のPCに番号を送信するようにしたい。私はこれが不可能だと感じているのは、PCはデバイスではなくホストであることを意図しているからですが、USBは本当に限られていますか?私は実際にUSBが入力バッファと出力バッファだけを持つCOMポートのようではないことを嫌っている。あなたは簡単に送受信します。私はlibusbを見て、私はそれを使うことができましたが、私は1台のPCをデバイスにする方法を見つけることができません。だからそれは可能ですか?PCからPCへのUSB通信

+0

。どのように動作するのかわかりません - おそらく、ホスト間ではなく、デバイスであるように見えるようにする特別なデバイスがマシン間にあります。 – Jason

+0

あなたはUSBがシリアルのようなものではないことを嫌うかもしれませんが、一般消費者にとっては、USBはコンピュータがどのタイプのデバイスを自動的に検出し、多くの場合ドライバを自動的にインストールするのかを考慮しています。構成ユーティリティーにCOMポート番号を入力する必要がなくなりました。 –

答えて

5

1台のPCをデバイスにする方法が見つかりません。だからそれは可能ですか?

いいえ、これはPCでは不可能です。 USBは常にHost-> Deviceを通信し、PCは常にHostです。 特別なUSB2USBケーブルを購入することができます。中央には両端にデバイスとして通信するチップがあります。

しかし、私はLANケーブルを使用します。私が知っているすべてのPCは、最近イーサネットを搭載しています。 TCP/IPはあまりにも使いにくくありません。

+0

+1 LANとTCP/IPの場合+1。 TCP/IP接続をセットアップした後は、シリアルポートと非常によく似ており、入力バッファと出力バッファがあるだけです。 –

+0

その場合、イーサネットまたは特別なUSBケーブルを使用して調べる必要があります。ありがとうございました。 – user1214513

+0

[USB RNDISを有効にする](https://support.criticallink.com/redmine/projects/arm9-platforms/wiki/Enabling_USB_RNDIS_Support)について教えてください。 _RNDISをサポートすることで、PCはLinuxベースの組み込みシステムとUSB経由で通信できます._ また、RNDISにはssh o Webサーバーとしてアクセスできます。特別なケーブルが必要な場合は私の質問だけでなく、定期的に? –

4

シリアルポートがあまり好きな場合は、各コンピュータにUSB-to-serial adapterを入力して、それらを一緒に配線する必要があります。これらのデバイスは、コンピュータ上に仮想COMポートを作成し、通常のCOMポートと同じ方法で使用できます。

+0

+1は、最も簡単でハッキング可能な方法の1つです。 – gbmhunter

3

APIまたはSDKをサポートするUSB​​データ転送ケーブル(USBデータリンクケーブルとも呼ばれる)が必要です。次に、次のコードを使用してください。 USB経由のWinSock(TCP/IP)やUSB経由のシリアルポートよりもはるかに高速な通信速度。 USB2.0の通信速度は480Mbps、データ通信速度は100Mbps以上で、ウイルスやネットワーク攻撃を隔離することができます。

void CU2uDlg::OnOK() 
{ 
BYTE  buf[65530]; 
LPU2URET pU2uRet; 
BOOL  bRet; 
int   ret; 
CString  msgstr; 

ret = u2u_open(); 
if (ret == -1){ 
    AfxMessageBox("Open U2U device Success."); 
}else{ 
    msgstr.Format("Open U2U device fail,return:%d", ret); 
    AfxMessageBox(msgstr); 
    return; 
} 

//send data 
bRet = u2u_SendData(buf, 65530, ret); 
if(!bRet) 
{ 
    msgstr.Format("Send data error,return:%d", ret); 
    AfxMessageBox(msgstr); 
    return; 
} 

//receive data 
while (1){ 
    bRet = u2u_RecvData(recvData, dataLen, ret); 
    if(!bRet) 
    { 
     msgstr.Format("Receive data error,return:%d", ret); 
     AfxMessageBox(msgstr); 
     u2u_close(); 
     return; 
    }else{ 
     break; 
    } 
} 
u2u_close(); 


} 

を参照してください:PCからPCへの通信を可能にします( "USB転送ケーブル" を検索する)を得ることができる特別なUSBケーブルがある Reference1Reference2

関連する問題