开启树莓派3B的串口支持
对于我来说,系统必然只选raspbian,因为Mathematica只在该系统免费捆绑发布。另外,新版本的raspbian可以通过界面配置就能开启,网上目前充斥的很多文章都讲的是 怎么替换掉蓝牙的冲突串口,要费点事。
串口工具
现存的工具
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);
}