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

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

4

2 回答 2

13

从字面上看,CHR$(13)+CHR$(10)is ((char)13) + ((char)10),虽然为了易读性,最好使用字符串"\r\n"

于 2014-03-19T16:21:10.543 回答
0

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

于 2014-03-19T16:11:39.403 回答