【问题标题】:Converting QBasic CHR$(13)+CHR$(10) to C#将 QBasic CHR$(13)+CHR$(10) 转换为 C#
【发布时间】:2014-04-26 00:26:47
【问题描述】:

我正在尝试通过我的串行端口传递一个直接的 ASCII 文本命令,如下所示:

string cmd = "<ID00><PA>Hello World. ";
template.Serial.WriteLine(cmd);

Serial 是一个 SerialPort 属性引用。我也尝试过'Write(cmd)',但即使串行端口打开,命令似乎也永远不会通过。我发现我应该在消息的末尾添加一个回车符(cr)和一个换行符(lf),但是我不知道如何在 C# 中执行此操作,除非将所有内容都转换为字节但是根据我对协议的理解,它需要作为 ASCII 文本传递。

我发现某人的 QBasic 源代码如下所示:

100 OPEN "COM1:9600,N,8,1,CS,DS,CD" AS 1
200 PRINT #1,"<ID00>";:REM SIGN ADDRESS, 00 FOR ALL
210 PRINT #1,"<PA>";:REM PAGE "A" (MESSAGE NUMBER, A-Z)
220 PRINT #1,"<FQ>";:REM OPTIONAL DISPLAY MODE, (FA-FZ), "APPEAR"
230 PRINT #1,"<CB>";:REM OPTIONAL COLOR CHANGE, (CA-CZ), "RED"
240 PRINT #1,"Hello World";:REM TEXT
250 PRINT #1, CHR$(13)+CHR$(10);:REM MUST END IN CARRIAGE RETURN/LINE FEED

那么如何将 CHR$(13)+CHR$(10) 转换为在 c# 代码中附加到字符串行末尾以通过串行端口发送的字符?

【问题讨论】:

标签: c# string serial-port ascii qbasic


【解决方案1】:

System.Environment.NewLine 附加到您的字符串中。这相当于 Windows 系统上的 "\r\n"(但它不适用于 Unix 系统)。

【讨论】:

  • 其实不是个好主意,他需要\r\n,不是系统默认的。
  • 确实如此,但在大多数情况下,这将等同于旧的 vbCrLf。
【解决方案2】:

字面意义上的CHR$(13)+CHR$(10)就是((char)13) + ((char)10),虽然为了易读性,还是用"\r\n"这个字符串会更好

【讨论】:

  • "\r\n" 工作就像一个魅力,我已经为此工作了将近一个星期,感谢您的帮助... :)
猜你喜欢
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多