C# RS232串行通信仅发送字符串的第一个字符

C# RS232串行通信仅发送字符串的第一个字符,c#,winforms,serial-port,C#,Winforms,Serial Port,我正在用C#开发一个Windows窗体应用程序,它需要将一个字符串的代码(文本)发送到应用程序。它通过25路RS-232C串行端口连接到Tanac,通过USB连接到Windows PC。电缆看起来像 问题是我只能发送一个字符。如果我运行程序,它将发送第一个字符,然后如果我重新启动程序并尝试再次发送字符串,它不会发送任何内容。我必须拔下USB端口并再次插入,然后当我重新运行程序时,它将再次发送一个字符并停止 代码如下: SerialPort com3 = new SerialPort("COM3"

我正在用C#开发一个Windows窗体应用程序,它需要将一个字符串的代码(文本)发送到应用程序。它通过25路RS-232C串行端口连接到Tanac,通过USB连接到Windows PC。电缆看起来像

问题是我只能发送一个字符。如果我运行程序,它将发送第一个字符,然后如果我重新启动程序并尝试再次发送字符串,它不会发送任何内容。我必须拔下USB端口并再次插入,然后当我重新运行程序时,它将再次发送一个字符并停止

代码如下:

SerialPort com3 = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
com3.Handshake = Handshake.None;
com3.Open();
com3.WriteLine("12345"); // this sends just the first char
//com3.Write("12345"); // this also just sends the first char
注意:我已经检查了SerialPort属性,它们与COM3驱动程序详细信息匹配

有人知道我的潜在问题是什么吗?我需要发送一个大约300个或更少字符的字符串,每个换行符之间平均有4个字符


编辑:我不知道这是否有帮助,但RS232C电缆连接到RS232跳线盒,跳线盒连接到Tanac上的RS232C端口…

是什么让你相信只有一个字符在传输?(你有逻辑分析仪吗?)你说的“25路”是什么意思?(你是指DB25还是使用一个专用的25端口串行适配器a la)除了米奇所问的,你说的“然后它锁定”到底是什么意思。这描述太模糊了。二十五个人会读到这篇文章,二十五个人会各自想象不同的事情发生。那二十五个人的想象可能都跟不上你的现实。因此……如果设备需要8位数据,您可能希望使用
com3.Encoding=Encoding.GetEncoding(28591)进行扩充,或类似。@Mitch我可以在Tanac屏幕上看到它,但只有一个出现,然后光标闪烁等待更多,但什么也没有出现。。。我的意思是串行端口有25个引脚,而不是9个,我想这可能是不相关的信息?我是一个从事硬件工作的CS人员,我几乎没有学习过:]先去吃低垂的水果。我建议你自己买一些支持RS232的终端程序(我想Putty也能做到)。手动尝试不同的串行端口设置,查看在设备上键入/发送一些数字时会发生什么。与尝试使用不同的串行设置来修补程序相比,这可能不那么麻烦。此外,如果您在/另一台与设备一起工作的计算机上有其他软件,请检查您是否可以从该程序的配置数据中收集正确的串行设置…是什么让您相信只有一个字符正在传输?(你有逻辑分析仪吗?)你说的“25路”是什么意思?(你是指DB25还是使用一个专用的25端口串行适配器a la)除了米奇所问的,你说的“然后它锁定”到底是什么意思。这描述太模糊了。二十五个人会读到这篇文章,二十五个人会各自想象不同的事情发生。那二十五个人的想象可能都跟不上你的现实。因此……如果设备需要8位数据,您可能希望使用
com3.Encoding=Encoding.GetEncoding(28591)进行扩充,或类似。@Mitch我可以在Tanac屏幕上看到它,但只有一个出现,然后光标闪烁等待更多,但什么也没有出现。。。我的意思是串行端口有25个引脚,而不是9个,我想这可能是不相关的信息?我是一个从事硬件工作的CS人员,我几乎没有学习过:]先去吃低垂的水果。我建议你自己买一些支持RS232的终端程序(我想Putty也能做到)。手动尝试不同的串行端口设置,查看在设备上键入/发送一些数字时会发生什么。与尝试使用不同的串行设置来修补程序相比,这可能不那么麻烦。此外,如果您在/另一台与该设备一起工作的计算机上有其他软件,请检查您是否可以从该程序的配置数据中收集正确的串行设置。。。