在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