c# - Windows Mobile - 串行端口通信

标签 c# windows-mobile bluetooth

我必须通过串行端口进行通信。我现在正在尝试允许通过 2 个设备进行蓝牙通信,但一无所获。

我在设备上有一个应用程序(称为蓝牙浏览器),它允许我进行串行通信,并且如果您想知道的话,它将使用 Stonestreet One 堆栈通过蓝牙发送:(

在设置中,我可以创建一个定义了 COM 端口的“服务”。

然后我尝试运行以下代码(我在一个设备上调用 Write 并在另一设备上调用 Read)。执行 serialPort.Open() 时,BTExplorer 会启动配对应用程序。我选择要使用的“服务”(串行端口 1)。

但是 serialPort.ReadLine() 挂起并且永远不会返回。 (我的意思是真的挂起。我必须热启动设备才能终止我的应用程序。结束进程/终止进程不起作用。)

以下是引用代码:

public void WriteSerial()
{
    SerialPort serialPort = new SerialPort("COM4");
    serialPort.Open();
    serialPort.WriteLine("Hello To The Other Side");
    serialPort.Close();
}

public void ReadSerial()
{
    SerialPort serialPort = new SerialPort("COM4");
    serialPort.Open();
    string output = serialPort.ReadLine();
    serialPort.Close();
    MessageBox.Show(output);
}

private void btnWrite_Click(object sender, EventArgs e)
{
    WriteSerial();
}

private void btnRead_Click(object sender, EventArgs e)
{
    ReadSerial();
}

如何让它工作?

我正在使用 Windows Mobile 5 和 MC70 设备。蓝牙堆栈是 Stonestreet One(遗憾的是无法更改)。使用 C# Compact Framework .NET 3.5 进行开发

最佳答案

API help says ,

By default, the ReadLine method will block until a line is received. If this behavior is undesirable, set the ReadTimeout property to any non-zero value to force the ReadLine method to throw a TimeoutException if a line is not available on the port.

...所以,如果你想避免它挂起,就这样做。

无论如何:

  • 您如何知道两个设备/端口已相互连接(通过蓝牙)?
  • 在调用 Open 方法之前,您是否设置了 SerialPort 属性(例如 BaudRate 等)?
  • 首先调用 ReadLine 还是 WriteLine 有什么区别吗? 与其执行打开/写入/关闭和打开/读取/关闭操作,不如执行打开/打开/读取/写入/关闭/关闭操作如何?
  • 发送方调用 WriteLine 后,接收方 BytesToRead 属性返回什么?
  • 您是否看过现有的串口示例代码(根据 Stonestreet One Bluetooth SDK FAQ )

如果他们的 SDK 确实有示例程序,那么我建议您在更改示例程序和/或测试之前使用它(未更改)来验证您的测试设置(例如验证您的设备是否正确连接)您自己的软件(使用您已经使用其示例软件测试过的相同设备/测试设置)。

关于c# - Windows Mobile - 串行端口通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1534552/

相关文章:

c# - ASP.NET MVC Razor 语法错误

c# - 什么是 C# 中的 IEnumerator 以及它在 Unity 中的用途?

c++ - 如何在 Windows Mobile 的 MFC 对话框中更改字体/颜色?

.net - 在 Windows Mobile 上编程 ActiveSync

c++ - 检查是否有 TCP/IP 连接以及它是 WiFi 还是 3G - Windows Mobile 6.5 - C/C++

java - 无法使用 bluecove 检测蓝牙设备

c# - PostBack 后 ASP.NET TextBox 值未保留 - session 值正常

c# - 我应该如何防止在这里多次插入?

ios - didDiscoverPeripheral 未调用

不支持安卓蓝牙