windows下藍芽虛擬串列埠通訊

2021-07-07 06:28:11 字數 2497 閱讀 9252

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串列埠控制項的。個人感覺,都不是很好用。甚至有時候只要要個命令列下的串列埠工具,不需要介面,敲入不同的...