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?

roadmaster
  • 593
  • 2
  • 9
  • 22
  • See http://stackoverflow.com/questions/36976240/c-sharp-char-from-int-used-as-string-the-real-equivalent-of-vb-chr – ib11 Jun 04 '16 at 06:47

2 Answers2

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"

l33tmike
  • 351
  • 1
  • 8
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).

Shane Wealti
  • 2,252
  • 3
  • 19
  • 33