c# - 将大型阵列从 Arduino 发送到 PC
问题描述
由于 C# windows 窗体应用程序,我正在尝试从 arduino 发送一个字节数组。问题是没有完整的阵列到达。前 100-200 个字节是正确的,但其他的都是零。多少是正确的完全随机。这是我的 arduino abd C# 代码。
if (commandString.equals("IMPOR")) {
digitalWrite(led2Pin, HIGH);
digitalWrite(led3Pin, LOW);
byte buf[2048];
for (int i = 0; i < 1024; i++) {
if (Serial.availableForWrite() > 2) {
byte lb = SRAM.readByte(2 * i);
byte hb = SRAM.readByte(2 * i + 1);
int16_t raw2 = word(hb, lb);
buf[2 * i] = raw2 & 255;
buf[2 * i + 1] = (raw2 >> 8) & 255;
}
}
Serial.write(buf,sizeof(buf));
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, HIGH);
}
和 c#:
int[] bdata = new int[1024];
private void SerialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int bytes = 2048; // ComPort.BytesToRead;
byte[] buffer = new byte[bytes]; //Párosak a low bytok. Páratlanok a hugh byteok
ComPort.Read(buffer, 0, bytes);
int[] intbuffer = Array.ConvertAll(buffer, x => (int)x);
//int[] bdata = new int[bytes / 2];
for(int i = 0; i < 1024; i++)
{
bdata[i] = intbuffer[2 * i + 1] * 256 + intbuffer[2 * i];
}
}
DatarecievedTreshlod 设置为 2048。这是来自调试的图片: 调试
有谁知道可能是什么问题?SRAM是23LCV512。
解决方案
推荐阅读
- azure - 将 Ghost 博客容器部署到 Azure Linux 应用服务 - siteContainer x 未响应端口:2368 上的 HTTP ping,站点启动失败
- terraform - 测量 terraform 应用执行时间的时间
- javascript - 反应js中的Wasm函数内存访问越界
- python - 如何每次通过电报机器人运行脚本
- c# - 用户故事下的 Azure DevOps API 创建任务
- python - Python selenium 忽略文本格式?
- r - 如何在R中确定矩阵可逆
- web3py - 检查钱包是否被批准使用令牌
- javascript - 模式未出现在列表项单击上
- jenkins - 如何实现工作时间 Jenkins 插件