Невозможно прочитать серийный номер в c#, но работает в python - PullRequest
0 голосов
/ 14 июля 2020

Я не могу читать из последовательного порта в C#, все настройки совпадают (бод, сбит и т. Д. c ...), код действительно отправляет код SCPI на мой гаджет, но это не так. отвечает (гаджет).

У меня очень похожий код в Python 3.7, и он работает правильно, с тем же гаджетом и со всеми другими.

Итак, это C# код:

SerialPort com = new SerialPort("COM22",9600,Parity.Even,7,StopBits.Two);
        com.Open();
        Thread.Sleep(100);
        com.DiscardOutBuffer();
        com.DiscardInBuffer();

        Console.Write("SCPI: ");
        string cmd = Console.ReadLine();
        com.Write(cmd + "\n");
        Thread.Sleep(2000);
        string answ = com.ReadExisting();
        Console.WriteLine("The answer "+answ);
        com.Close();

Здесь, в C# Я также пробовал ReadChar(), ReadByte() и ReadLine() ...

А также пытался изменить HandShake.

И вот код Python:

import time
import serial

while 1:
    try:
        comPort = input("Insert COM port num to use: ")

        ser = serial.Serial(
            port='COM' + comPort,
            baudrate=9600,
            parity=serial.PARITY_EVEN,
            stopbits=serial.STOPBITS_TWO,
            bytesize=serial.SEVENBITS
        )  # serial port settings
        ser.isOpen()
        break
    except Exception:
        print("Bad COM port. Try again.")

print('Enter your commands below.\nInsert "exit" to leave the application.')

while 1:
    cmd = input("Insert your command: ")  # insert the commands
    if cmd == 'exit':
        ser.close()
        exit()
    else:
        ser.write(str.encode(cmd + '\n'))  # send the character to the device
        out = " "
        time.sleep(2)  # wait one second before reading output (give device time to answer)
        while ser.inWaiting() > 0:
            out += ser.read(1).decode("ascii")

        print(">>" + out)  # output the answer

Как видите, они очень похожи, с одинаковым временем ожидания ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...