windows下可以通過rfcomm虛擬的串列埠進行通訊.
rfcomm簡介:
rfcomm**rs232串列埠,該**過程包括非資料通路狀態的傳輸。rfcomm不限制人工速率或步長,如果通訊鏈路兩端的裝置都是負責將資料**到其他通訊介質的第二類裝置,或在兩端rfcomm裝置介面上進行資料傳輸,實際資料吞吐一般將反映波特率的設定.rfcomm支援兩個裝置之間的多串列埠**,也支援多個裝置多串列埠的**.
winsock支援rfcomm,其位址是sockaddr_bth,位址族是af_bth.
1.首先把藍芽名字轉換成能鏈結的位址。
ulong cbluetooth::nametobthaddr( const
char *pszremotename, psockaddr_bth premotebtaddr)
if ( cxn_success == iresult)
iresult = cxn_success;
hlookup = 0;
bcontinuelookup = false;
zeromemory(pwsaqueryset, ulpqssize);
pwsaqueryset->dwnamespace = ns_bth;
pwsaqueryset->dwsize = sizeof(wsaqueryset);
iresult = wsalookupservicebegin(pwsaqueryset, ulflags, &hlookup);
if ( (no_error == iresult) && (null != hlookup) )
else
if ( 0
< iretrycount )
while ( bcontinuelookup )
} else
else
if ( wsaefault == iresult )
}else}}
wsalookupserviceend(hlookup);
if ( status_no_memory == iresult )}}
if ( null != pwsaqueryset )
if ( bremotedevicefound )
else
return iresult;
}
2.建立鏈結
//hkey_local_machine\system\currentcontrolset\services\bthport\parameters\localservices\
/*cbluetooth:是本模組的底層通訊的類,該類為ecu類提供服務,該類把ecu要傳送的類容抽象成類,通過傳送和接收緩衝,儲存該流的內容,而不管實際的傳送或
接收的資料的意義。
*/define_guid(g_guidserviceclass,0x00001101,0x0000,0x1000,0x80,0x00,0x00,0x80,0x5f,0x9b,0x34,0xfb);
//remotebthaddr,藍芽裝置的位址
sockaddr_bth sockaddrbthserver= remotebthaddr;
sockaddrbthserver.addressfamily = af_bth;
sockaddrbthserver.serviceclassid = g_guidserviceclass;
sockaddrbthserver.port = 0;
if (invalid_socket != localsocket)
localsocket = socket(af_bth, sock_stream, bthproto_rfcomm);
if ( invalid_socket == localsocket )
//建立藍芽連線
if ( 0 == connect(localsocket,
(struct sockaddr *) &sockaddrbthserver,
sizeof(sockaddr_bth)) )
3.傳送資料
resetevent(hsendevent);
intsum=0;
while (sum
< pdu.size())
sum += icount;
}
4.接收資料
while(1)
;int
count=recv(localsocket,buffer,sizeof(buffer),0);
if (count
< 0)
cursum +=count;
if (0 != count)
}if(receivebuffer.size() >= 6 && (destsum == 8))
if (destsum != 0 && cursum >= destsum)
c 藍芽虛擬串列埠 C 虛擬串列埠通訊
將主埠com8拆分成 com1和com2兩個虛擬埠 com8接收的訊息會傳遞給com1和com2 serialport spsend spsend,spreceive用虛擬串列埠連線,它們之間可以相互傳輸資料。spsend傳送資料 serialport spreceive spreceive接受資料...
Windows使用VSPD虛擬串列埠
最近在做android串列埠方面的開發,由於裝置比較龐大又在客戶現場,平時開發只能使用電腦上虛擬的串列埠來進行除錯。下面來說一下使用vspd virtual serial port driver 虛擬windows串列埠 這裡,虛擬了com3 和com4 一組串列埠,待會兒使用這兩個串列埠進行通訊,...
Windows 下串列埠程式設計
經常需要用到windows下的串列埠工具。某些時候,現有的工具不能滿足需求,於是需要自己開發寫個串列埠小工具,來完成某些操作。windows下串列埠工具的源 很多,有用cserial類的,有用mfc串列埠控制項的。個人感覺,都不是很好用。甚至有時候只要要個命令列下的串列埠工具,不需要介面,敲入不同的...