Я хотел бы отправить данные из C-программы в Python-программу, которая будет визуализировать эти данные.Средой разработки является компьютер Linux (Ubuntu 18.04LTS).Проще говоря, обе программы работают на одном и том же компьютере.
Я использую termios для открытия последовательного порта в программе на C, а pySerial на стороне Python.Что касается последовательного порта, я использую "ttyS0".Проблема в том, что когда я посылаю «Hello» из C-программы в Python-программу и печатаю его на терминале, я вижу пробел, в основном я получаю это «».
У меня вопрос: могу ли я использовать для этой цели последовательный порт "ttyS0" (я думаю, это виртуальный порт)?
Вот код C:
#include <stdint.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <termios.h>
#include <time.h>
// Termios init functions are not posted because the configuration
// is correct and proved that they are working.
int main()
{
char *portname = "/dev/ttyS0";
int fd;
int wlen;
unsigned char writeBuffer[] = "Hello!";
fd = open(portname, O_RDWR | O_NOCTTY | O_SYNC);
if (fd < 0) {
printf("Error opening %s: %s\n", portname, strerror(errno));
return -1;
}
/*baudrate 115200, 8 bits, no parity, 1 stop bit */
set_interface_attribs(fd, B115200);
do{
wlen = write(fd, writeBuffer, sizeof(writeBuffer));
printf("Sent data is: \"%s\"\n", writeBuffer);
delay(500);
} while(1);
}
Код Python:
import serial
from time import sleep
port = "/dev/ttyS0"
ser = serial.Serial(port, 115200, timeout=0.5)
while True:
data = ser.readline()
print(str(data.decode('utf-8')))
ser.close()