5

I'm trying to pass a straight ASCII text command through my serial port, something like this:

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

Serial being a SerialPort property reference. I've also tried 'Write(cmd)' but even though the serial port is open the command never seems to go through. I've found that I'm supposed to add a Carriage return (cr) and a Line Feed (lf) to the end of the message, but I don't know how to do this in C# short of converting everything to bytes but It needs to be passed as ASCII Text from my understanding of the protocol.

I found someone's QBasic source that looks like this:

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

So how would you convert CHR$(13)+CHR$(10) to characters that you append to the end of a string line in c# code to be sent through a serial port?

1

2 Answers 2

14

In literal terms, CHR$(13)+CHR$(10) is ((char)13) + ((char)10), although for legibility, it would be better to use the string "\r\n"

1
  • 1
    "\r\n" worked like a charm, I've been working on this for almost a week now, thanks for the help... :)
    – roadmaster
    Commented Mar 19, 2014 at 20:38
0

Append System.Environment.NewLine to your string. This is the equivalent of "\r\n" on Windows systems (but it will not work on Unix systems).

2
  • 2
    Not actually a good idea, he needs \r\n, not the system's default. Commented Mar 19, 2014 at 16:55
  • 1
    That's true but in most cases this will be equivalent to the old vbCrLf. Commented Mar 19, 2014 at 18:23

Not the answer you're looking for? Browse other questions tagged or ask your own question.