我试图通过我的串行端口传递一个直接的ASCII文本命令,如下所示:
string cmd = "<ID00><PA>Hello World. ";
template.Serial.WriteLine(cmd);
Serial是一个SerialPort属性引用。我也尝试过"写(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#代码中通过串行端口发送的字符串行末尾的字符?
从字面上看,CHR$(13)+CHR$(10)
是((char)13) + ((char)10)
,但为了便于阅读,最好使用字符串"rn"
将System.Environment.NewLine
附加到字符串中。这相当于Windows系统上的"rn"(但在Unix系统上不起作用)。