Converting QBasic CHR$(13)+CHR$(10) to C#

roadmaster picture roadmaster · Mar 19, 2014 · Viewed 16.2k times · Source

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?

Answer

l33tmike picture l33tmike · Mar 19, 2014

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"