2012-02-16 16 views
5

मैं दो पीसी के बीच यूएसबी के माध्यम से कैसे संवाद कर सकता हूं? मैं चाहता हूं कि एक प्रोग्राम यूएसबी पोर्ट को दूसरे पीसी पर भेज देगा, जिस पर एक और कार्यक्रम इन नंबरों को दिखाएगा। मुझे यह महसूस हो रहा है कि यह असंभव है क्योंकि पीसी का मेजबान होना है, न कि डिवाइस, बल्कि यूएसबी वास्तव में सीमित है? मैं वास्तव में नफरत करता हूं कि यूएसबी एक COM पोर्ट की तरह नहीं है जिसमें केवल इनपुट बफर और आउटपुट बफर है। आप आसानी से भेजते हैं और प्राप्त करते हैं। मैंने libusb देखा और मैं इसका उपयोग कर सकता था, लेकिन मुझे एक पीसी को एक डिवाइस बनाने का कोई तरीका नहीं मिल रहा है। तो क्या यह भी संभव है?पीसी से पीसी यूएसबी संचार

+0

वहाँ विशेष USB केबल आप (खोज "USB स्थानांतरण केबल") प्राप्त कर सकते हैं कि पीसी करने वाली पीसी संचार की अनुमति है। कोई विचार नहीं कि वे कैसे काम करते हैं - संभवत: उनके पास मशीनों के बीच कुछ विशेष डिवाइस है जो प्रत्येक व्यक्ति को डिवाइस होने की अनुमति देता है, मेजबान नहीं। – Jason

+0

आप इससे नफरत कर सकते हैं कि यूएसबी धारावाहिक की तरह नहीं है, लेकिन औसत उपभोक्ता के लिए यह एक देवता है क्योंकि यूएसबी कंप्यूटर को स्वचालित रूप से यह पता लगाने की अनुमति देता है कि आपने किस प्रकार के डिवाइस को प्लग किया है और कई मामलों में ड्राइवर स्वचालित रूप से इंस्टॉल करते हैं। कॉन्फ़िगरेशन उपयोगिताओं में COM पोर्ट नंबर दर्ज करने के लिए और नहीं। लैन और टीसीपी/आईपी के लिए –

उत्तर

5

मुझे एक पीसी को डिवाइस बनाने का कोई तरीका नहीं मिल रहा है। तो क्या यह भी संभव है?

नहीं, यह पीसी पर संभव नहीं है। यूएसबी हमेशा होस्ट-> डिवाइस, और पीसी हमेशा होस्ट करता है। आप एक विशेष यूएसबी 2 यूएसबी केबल खरीद सकते हैं, इसमें मध्य में चिप है जो दोनों सिरों पर डिवाइस के रूप में संचार करता है।

लेकिन मैं बस एक लैन केबल का उपयोग करूंगा। मुझे पता है कि हर पीसी ईथरनेट के साथ आता है। टीसीपी/आईपी का उपयोग करना बहुत कठिन नहीं है।

+0

+1। एक टीसीपी/आईपी कनेक्शन स्थापित करने के बाद, यह सीरियल पोर्ट के समान है और आपके पास सिर्फ एक इनपुट बफर और आउटपुट बफर है। –

+0

ठीक है, उस स्थिति में मुझे या तो ईथरनेट या उस विशेष यूएसबी केबल का उपयोग करना होगा। धन्यवाद। – user1214513

+0

[यूएसबी आरएनडीआईएस सक्षम करना] के बारे में क्या है (https://support.criticallink.com/redmine/projects/arm9-platforms/wiki/Enabling_USB_RNDIS_Support)? _RNDIS समर्थन एक पीसी को यूएसबी संलग्न ईथरनेट एडाप्टर.ए की तरह दिखने वाला यूएसबी पर लिनक्स आधारित एम्बेडेड सिस्टम से बात करने की अनुमति देता है और हम एसएसडी ओ वेब सर्वर के रूप में आरएनडीआईएस तक पहुंच सकते हैं। मेरे प्रश्न अगर हमें नियमित केबलों की ज़रूरत है तो साथ ही नियमित रूप से? –

4

यदि आपको धारावाहिक बंदरगाहों को बहुत पसंद है, तो आपको प्रत्येक कंप्यूटर के लिए USB-to-serial adapter प्राप्त करना चाहिए और फिर उन्हें एक साथ तार करना चाहिए। ये डिवाइस आपके कंप्यूटर पर वर्चुअल COM पोर्ट बनाते हैं और आप इसका उपयोग उसी तरह कर सकते हैं जैसे आप एक सामान्य COM पोर्ट का उपयोग करेंगे।

+0

+1 की तुलना में यह तेज़ नहीं है, जो इसे करने के सबसे सरल, हैक करने योग्य तरीकों में से एक है। – gbmhunter

3

आपको यूएसबी डेटा ट्रांसफर केबल (जिसे यूएसबी डेटा लिंक केबल भी कहा जाता है) होना चाहिए जो एपीआई या एसडीके का समर्थन करता है, फिर निम्न कोड का उपयोग करें। यूएसबी पर यूएसबी या सीरियल पोर्ट पर WinSock (टीसीपी/आईपी) का उपयोग करने से संचार की गति बहुत तेज है। यूएसबी 2.0 संचार गति 480 एमबीपीएस है, प्रभावी डेटा संचार 100 एमबीपीएस से अधिक गति करता है, और वायरस और नेटवर्क हमलों को अलग कर सकता है।

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(); 


} 

देखें: Reference1, Reference2

संबंधित मुद्दे