这是我的尝试:
syntax = "proto3";
package Message;
message Message {
string name = 1;
string serial = 2;
int32 command = 3;
enum Status {
GOOD = 0;
BAD = 1;
}
Status status = 4;
int32 length = 5;
// end of header
// start of payload
int32
背景:我花了一段时间使用各种设备接口,看到了许多协议,其中许多是串行和UDP,其中数据完整性是在应用程序协议级别处理的。我一直在寻求改进我的接收例程对协议的处理,并考虑到协议的“理想”设计。
我的问题是:有没有协议帧方案可以在所有情况下明确地识别损坏的数据?例如,考虑许多协议的标准成帧方案:
Field: Length in bytes
<SOH>: 1
<other framing information>: arbitrary, but fixed for a given protocol
<length>: 1 or 2
<data payloa
当我调用此代码时:
using (var connection = new SqlConnection(connectionString))
{
var command = new SqlCommand("SELECT * FROM Table", connection);
connection.Open();
using (var reader = command.ExecuteReader())
{
while(reader.Read())
{
// Do something here
我想确保在连接到Chrome (通过WebUSB)的设备上,IN端点不包含以前批量传输的消息。我检查了WebUSB:的API,没有看到任何允许清空缓冲区的刷新函数。我在考虑在设备返回NAK之前读取数据--如下所示:
/* #1 Make sure that IN endpoint contains no more data */
while (true) {
let result = await data.transferIn(1, 6);
if (result.length === 0) {
break;
}
}
/* #2 Send request */
awai