Я сталкиваюсь с очень странной проблемой при использовании g ++ 4.1.2. У меня есть очень простая программа, которая открывает последовательный порт и записывает в него данные. Порт открывается и настраивается с помощью следующих команд:
fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);
struct termios port_settings;
cfsetispeed(&port_settings, B115200);
cfsetospeed(&port_settings, B115200);
port_settings.c_cflag &= ~PARENB;
port_settings.c_cflag &= ~CSTOPB;
port_settings.c_cflag &= ~CSIZE;
port_settings.c_cflag |= CS8;
tcsetattr(fd, TCSANOW, &port_settings);
У меня есть массив char
, состоящий из констант ASCII для отправки по последовательному каналу. Данные записываются с использованием простых write(fd, &serial_out, 1)
, serial_out
- символов, которые должны быть записаны. Затем эти данные помещаются на ЖК-дисплей 16x2.
Теперь вот странная вещь. Пока я компилирую с -O0
, все это прекрасно работает. Однако, если я скомпилирую что-либо более высокое (1, 2, 3 или с), все строчные буквы отображаются на ЖК-дисплее заглавными буквами.
Кто-нибудь знает, что может быть причиной этого? Возможно, я упускаю из виду что-то простое, но на самом деле понятия не имею.