【发布时间】:2017-09-05 16:30:35
【问题描述】:
我们正在构建一个应用程序,该应用程序可以从 sim900a 模块发送和接收短信,该模块与带有 windows 10 iot 核心的 raspberry-pi 接口。
在 windows 窗体应用程序中:- 我们将通过调用 SerialPort 实例的 ReadExisting 方法来读取串行数据;它返回部分响应,因此我们必须循环并附加数据,直到我们收到的串行数据包含子字符串“OK”或“\r\n>”,这意味着我们已经完全读取了 AT 命令响应。
do
{
if (receiveNow.WaitOne(timeout, false))
{
string data = port.ReadExisting();
serialPortData += data;
}
}while (!serialPortData.EndsWith("\r\nOK\r\n") &&
!serialPortData.EndsWith("\r\n> ") &&
!serialPortData.EndsWith("\r\nERROR\r\n"));
如何在通用 windows 平台(uwp)中做同样的事情
我已经使用了这些命令,但是它读取了一部分(直到 \r \n),其余部分没有被读取。
Task<UInt32> loadAsyncTask;
uint ReadBufferLength = 1024;
// Set InputStreamOptions to complete the asynchronous read operation when one or more bytes is available
dataReaderObject.InputStreamOptions = InputStreamOptions.Partial;
// Create a task object to wait for data on the serialPort.InputStream
loadAsyncTask = dataReaderObject.LoadAsync(ReadBufferLength).AsTask();
// Launch the task and wait
UInt32 bytesRead = await loadAsyncTask;
if (bytesRead > 0)
{
rcvdText.Text = dataReaderObject.ReadString(bytesRead);
status.Text = "bytes read successfully!";
}
【问题讨论】:
-
我无法重现您的问题。你的代码对我有用。我重复发送“123\r\nOK\r\n”(使用 Arduino),我可以使用您的代码接收所有这些。
标签: raspberry-pi windows-10-iot-core sim900