開啟樹莓派3B的串口支持
對于我來說,系統必然只選raspbian,因為Mathematica只在該系統免費捆綁發布。另外,新版本的raspbian可以通過界面配置就能開啟,網上目前充斥的很多文章都講的是 怎么替換掉藍牙的沖突串口,要費點事。
rasp_config.png
串口工具
現存的工具
Linux下必然首推screen。windows下就用putty吧。
自己動手開發
使用Qt/QSerialPort
今天本著練練手的目的,寫了點代碼,主要實現文件只有100行左右:https://github.com/cymatics1717/demoQtSerial
這里面還是有好幾個細節上的坑的,只有親自動手做的人才能GET的到。不贅言。
-
基本功能
可以枚舉設備,連接,發送和接受數據指令。具備歷史記錄功能。 -
軟件質量
保證不崩潰。即在斷開連接,重復拔插,重復打開的情況下依然能正常使用。
具備錯誤反饋。捕捉所有錯誤信息。
示例代碼,打開:
void MainWindow::openPort()
{
enumSerials();
QString status;
if(serial_lst.size()==0){
status = "no available serial port";
} else if(ui->pushButton->text()=="Open"){
if(serial.isOpen()) serial.close();
auto port = serial_lst.at(ui->comboBox->currentIndex());
serial.setPort(port);
serial.setBaudRate(ui->comboBox_2->currentText().toInt());
if(serial.open(QIODevice::ReadWrite)){
// serial.setBaudRate(QSerialPort::Baud115200);
// serial.setDataBits(QSerialPort::Data8);
// serial.setParity(QSerialPort::NoParity);
// serial.setStopBits(QSerialPort::OneStop);
// serial.setFlowControl(QSerialPort::NoFlowControl);
ui->pushButton->setText("running");
writeData();
status = QString("current: %1:%2 %3\t\t%4 %5 [%6:%7]").arg(port.description())
.arg(port.portName()).arg(port.manufacturer())
.arg(port.serialNumber()).arg(port.systemLocation())
.arg(port.productIdentifier(),4,16,QChar('0'))
.arg(port.vendorIdentifier(),4,16,QChar('0'));
} else {
status = QString("open failed %1:%2").arg(serial.error()).arg(serial.errorString());
}
}
statusBar()->showMessage(status);
}
3B.png