将QBasic的CHR$(13)+CHR$(10)转换为C#

5

我正在尝试通过串口传递纯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

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

请参见https://dev59.com/d1oU5IYBdhLWcg3w5p2a。 - ib11
2个回答

14

从字面意义上说,CHR$(13)+ CHR$(10)((char) 13) + ((char) 10),但为了可读性,最好使用字符串"\r\n"


1
"\r\n" 真是太好用了,我已经忙碌了将近一周,感谢你的帮助... :) - roadmaster

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

2
这并不是一个好主意,他需要\r\n,而不是系统默认的。 - Hans Passant
1
这是正确的,但在大多数情况下,这将等同于旧的 vbCrLf。 - Shane Wealti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接