[C#]Comment ecrire entier converti en caractères sur COM1?
Bonjour , j'ai acheté une carte E/S .les programmes fournis avec celle ci fonctionnent tres bien . je tente d'ecrire sur le port COM1 un entier converti en caractere .cette carte possède 8 relais (Comelec FT357) .Pour commander ces relais il faut envoyer ** data # . data etant un caractere (ascii de 0 à 255) . Mon pb est que les relais ne sont plus commandés dès que la valeur depasse 127 ...
Code:
serialPort1.WriteLine("**" + Chr(valeur) + "#");
j'ai récupéré une fonction pour le Chr
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| if (asciiCode >= 0 && asciiCode <= 255)
{
System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
byte[] byteArray = new byte[] { (byte)asciiCode };
string strCharacter = asciiEncoding.GetString(byteArray);
return (strCharacter);
} |
sachant que le code en Basic fournis avec la carte (et qui fonctionne ) est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| REM***********************************************************
REM File:IO232.BAS Data:30/08/2000
REM CONTROLLO 8 OUT 8 IN DIGITALI E 2 IN A/D CON PORTA RS 232
REM (C) 2000 Futura Elettronica snc
REM***********************************************************
OPEN "COM2:9600,N,8,1,rs,cs0,ds0" FOR RANDOM AS #10
DO
a$ = ""
DO WHILE a$ = "" OR VAL(a$) < 0 OR VAL(a$) > 255
CLS
PRINT "Digita valore di OUTPUT da 0 a 255 (A=abbandona)";
INPUT a$
LOOP
IF a$ = "a" OR a$ = "A" THEN
CLOSE #10
EXIT DO
END IF
PRINT #10, "**" + CHR$(VAL(a$)) + "#";
digital$ = INPUT$(1, #10)
ad1$ = INPUT$(1, #10)
ad2$ = INPUT$(1, #10)
PRINT "Ingressi ="; ASC(digital$);
PRINT "Convertitore A/D 1 ="; ASC(ad1$);
PRINT "Convertitore A/D 2 ="; ASC(ad2$)
SLEEP 5
LOOP
END |