在UWP应用程序中,我想从串口读取连续的数据流。 InputStream中包含连续的JSON对象是这样的:从串口读取连续数据流并反序列化JSON对象
{
"sensor": "gps",
"time": 1351824120,
"data": [
48.75608,
2.302038
]
}
{
"sensor": "gps",
"time": 1351824120,
"data": [
48.75608,
2.302038
]
}
{
"sensor": "gps",
"time": 1351824120,
"data": [
48.75608,
2.302038
]
}
...
对于监听的端口上,我使用
var dataReaderObject = new DataReader(SerialPort.InputStream);
。
我正在使用一个任务来等待serialPort.InputStream中的数据。
Task<UInt32> loadAsyncTask = dataReaderObject.LoadAsync(ReadBufferLength);
但问题是,我不知道一个JSON对象的长度。如何读取或缓冲流,以便我可以desirialize JSON流?类似load data from "{" to "}"
。
有没有最佳做法来做到这一点?
编辑:
我也可以影响数据发送方。也许最好以更好的格式发送serali数据?你有任何改善发送数据的建议吗?
如果您可以影响发送端,为什么不包括将要发送的JSON的长度? – WiredPrairie
@WiredPrairie发送JSON直到设备关闭。我事先不知道这个长度。我可以发送每个单个JSON对象的长度。但是,我也必须阅读这个“长度值”。我会怎么做? – CPA
如果你不能这样做,你需要建立一个状态机,基本上是不断地连接结果,直到你检测到某种标记(可能是长度,但也可能是空行等等)。 – WiredPrairie