我有个奇怪的问题发生在一起。我以前使用过串行通信,但是这个新项目有一些额外的场景。
下面是一个概要的执行版本:
IEnumerator executecarousel()
{
SerialPort _serialPort = new SerialPort();
_serialPort.PortName = portprefix + carouselPortNum;
_serialPort.BaudRate = 19200;
_serialPort.DataBits = 8;
_serialPort.StopBits = StopBits.One;
_serialPort.ReadTimeout = 500;
_serialPort.WriteTimeout = 500;
byte[] carouselposition = byteStringToByteArray(carouselString);
_serialPort.Open();
yield return new WaitForSeconds(1);
_serialPort.Write(carouselposition, 0, carouselposition.Length);
yield return new WaitForSeconds(1);
byte[] executeCommand = byteStringToByteArray(executeString);
_serialPort.Write(executeCommand, 0, executeCommand.Length);
yield return new WaitForSeconds(1);
}当byte[]正好是8个字节时,我可以得到我想要的结果。如果它是任何其他大小,则命令不能正确通过。
示例
var carouselposition =:
"01 10 01 94 00 02 04 00 00 4C 90 C2 0C" -> Does not work
"01 05 00 C1 FF 00 DD C6" -> Does work
"90 06 05 01 03 03" -> Does not work我的问题:
experienced?
我可以建立一个微型服务,并调用它,但这是一个触摸笨重的项目,我正在工作。如果你碰巧知道我如何使这个工作,而不构建一个单独的组件,以附加统一,这将是非常感谢。
除byte[].Length大于或小于8外,一切正常工作,否则一切正常。
我试图添加更多的零。
我已经尝试将单个命令切割成8个字节段并发送。
我使用的是一个PLC,我没有权限更改接收命令的方式,所以这不是一个选项。
如果它不能被修复,我还有其他的工作来完成这个工作。如果有人碰巧知道这件事,我会省点时间的。
谢谢你的进阶!
发布于 2022-11-30 21:22:04
也许您可以尝试删除行_serialPort.DataBits = 8;
https://stackoverflow.com/questions/74633323
复制相似问题