我确实需要虚拟串口,因为程序#1必须为使用System.IO.Ports.SerialPort的第二个程序(程序#2)设置蓝牙连接,不是吗?如果程序#1和#2使用相同的串行端口同时运行,则不要求这样做。
32Feet.NET :好的。但如果我启动SuD 7次(一个接一个),我会得到“没有端口可用”。 COM9 - > COM7 - > COM5 - > COM4 - > COM2 - > COM0 - > “没有可用的端口”。
程序#1调用
bdi.SetServiceState(BluetoothService.SerialPort,true)
32feet.Net在HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Bluetooth \ Serial \ Ports
32feet.Net致电
RegisterDevice(portPrefix,portIndex,“btd.dll”,ref pep);
程序#2:this.comX.Open(); ... this.comX.Close();
EMDK :如果我启动SuD 7次(一个接一个),则抛出IndexOutOfRangeException。 COM2 - > COM4 - > COM5 - > COM6 - > COM7 - > COM9 - > IndexOutOfRangeException。
程序#1:我正在使用LocalComPort和HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Bluetooth \ Serial \ Ports 未更新。
程序#2:this.comX.Open(); ... this.comX.Close();
是什么原因?没有流程#1和流程#2。
答案 0 :(得分:0)
一旦你设置了端口一次,你为什么要再次这样做?使用SetServiceState,配置在注册表中永久设置,因此将永远存在,例如,重新启动后...大概对于您在EMDK中使用的方法也是如此。我不认识那个名字(也许只是摩托罗拉)但是在我的M3 Sky上我使用了BTExplorerApi,它在端口设置功能中有一个永远和永远的标志。
在带有MSFT堆栈的32feet.NET上。 (注意:彼得是这方面的专家而不是我)。 : - ,(据我所知,如果你使用类BluetoothSerialPort,那将创建一个临时配置的端口(不会重启等)。也许这就是你想要的?
答案 1 :(得分:0)
一旦你设置了端口一次,你为什么要再次这样做?
用例场景:X先生使用一个移动设备和一个串行RS232蓝牙适配器与多个设备进行通信。但是对于第七个,将不会有任何虚拟串口。
我使用 32feet.Net 用于ES400 无故障。对于MC55,MC35出现了正在讨论的现象。这就是我提出这个问题的原因。
我不知道引擎盖下发生了什么。但就EMDK而言:如果不再需要连接,则必须取消配对设备。
我正在为摩托罗拉ES400和MC55使用 EMDK :
/// <summary>
/// Removes the pairing, turns Bluetooth off and disables the bluetooth object.
/// </summary>
public void ReleaseLink(){
try{
this.remoteDevice.UnPair();
this.bluetooth.Dispose();
我正在使用 32feet.NET 用于Motorola MC35(调用RegisterDevice的BluetoothSerialPort):
if (!bdi.Authenticated)
{
string pair = rd.Pin;
paired = BluetoothSecurity.PairRequest(bdi.DeviceAddress, pair);
if (!paired)
{
return;
}
}
spp = BluetoothSerialPort.CreateClient(new BluetoothEndPoint(remoteAddress,BluetoothService.SerialPort));
public void ReleaseLink()
{
try
{
BluetoothSecurity.RemoveDevice(spp.Address);
spp.Dispose();