QSerialPort
과 QExtSerialPort
을 시도해 보았지만 어느 것도 올바르게 250k를 지원할 수없는 것 같습니다. QExtSerialPort
은 나열된 보드 유형이므로 지원할 것으로 보이지만 보드에 연결할 때마다 보드 속도와 같은 정크 데이터가 잘못 설정됩니다. 다른 모든 설정을 확인했는데 보드가 miniterm을 사용하여 테스트 한 결과 250k 이상에서 작동합니다. 다른 라이브러리가 있습니까? QExtSerialPort
과 다른 것을 시도해야합니까?Qt : 통신 속도를 지원하는 직렬 라이브러리 250k
답변
플랫폼에 Linux가 있어야한다고 가정합니다. Windows에서 실제로 전송 속도를 설정하는 한 가지 방법이 있으며, 작동하지 않으면 모든 사람에게 적용되지 않습니다.
반올림 문제가 있습니다. QSerialPort
코드는 기본 baud generator clock을 전송 속도로 단순히 나눕니다. 이것은 정수 나누기이며 절단으로 끝납니다. 하드웨어에 의해 선택된 통신 속도가 정확하게 지원되지 않는 경우 잘라내기를 잘못 된 방향으로 옮길 수 있습니다. 더 작거나 작지 않은 더 가까운 나눗셈이있을 수 있습니다. 보오 제네레이터 기본 주파수를 확인하고 이에 따라 보오율을 선택해야합니다.
Linux에는 전송 속도를 설정하는 many ways이 있습니다. QSerialPort
은 인용 답변에서 세 가지 방법 중 두 가지를 지원하지 않습니다. 따라서 세 가지 방법 중 두 가지 방법 만 지원하는 일부 드라이버는 지원하지 않습니다. 나는 얼마나 많은 운전자가 그 문제로 어려움을 겪을 지 모릅니다. 결국 그것은 청어가 될 수 있습니다.
Linux에서 장치에 사용되는 정확한 드라이버와 커널 버전을 알려주십시오. 이 드라이버가 현재 QSerialPort
코드와 관련하여 문제를 일으키는 지 살펴보고 확인할 수 있습니다.
// This must be at the very top of the .cpp file
#define private public
#include <QSerialPort>
#include "private/qserialport_p.h"
#include "private/qserialport_unix_p.h"
#undef private
QSerialPort * port;
...
// after the port was opened
int baudBase = port->d_ptr->currentSerialInfo.baud_base;
을 .pro
파일에서를, 당신은 QT += core-private
필요하고,이 경우 Qt는 5입니다 Qt 4를 사용하려면 Qt를 사용할 수있는 소스가 있어야합니다.
실제 수정본은 물론 QSerialPort
에 속합니다. 나는 QExtSerialPort
에 대해 아무것도 모른다.
오늘은 이걸 드리겠습니다. 보드가 보드 속도가 115k이지만 200k가 아무 것도없는 것처럼 보이면 적어도 제대로 작동하므로 백업 옵션이 있습니다. –
내가 언급 한 것을 잊어 버렸던 한 가지 점은 크로스 플랫폼 응용 프로그램인데 Qt의 QSerialPort를 사용하여 조금 밖에 추상화하려고 시도한 이유입니다. 현재 OS X에서 구현하고 있습니다. –
OS X에서'QSerialPort' 코드는 커스텀 보드 속도를 설정하는 두 가지 방법 중 하나만 사용합니다. 실제로 더 많은 드라이버가 지원할 수있는 더 간단한 방법을 건너 뜁니다 . 이것은'termios' 구조체 ('cfsetpspeed (...) '를 통해 접근 가능)에서'c_ispeed'와'c_ospeed'를 사용하는 대신'IOSSIOSPEED' ioctl을 사용합니다. –
Minicom이나 다른 것이 아니라 Miniterm에 대해 이야기하고 있습니까? Miniterm은 OS/X의 도우미 응용 프로그램으로, 실제로는 사용할 수 없습니다. Minicom에 대해 이야기하고 있다면, 나는 소스 코드를보고 QSerialPort와 비교할 수있다. –
아, 죄송합니다. 좀 더 정확해야합니다. miniterm.py입니다. –
miniterm.py를 다운로드 한 곳과 버전은 정확히 알려 주실 수 있습니까? 저기에 수많은 사본이있는 것 같습니다. –