#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QSerialPort>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QPushButton>
#include <QLineEdit>
#include <QDebug>
#include <QByteArray>
#include <QThread>
#include <QVector>
#include <array>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
enum Command {
COMMAND_POWER_SWITCH = 0xC0,
COMMAND_COLLECT_CHANNEL_SWITCH = 0xC1,
COMMAND_STIM_CHANNEL_SWITCH = 0xC2,
COMMAND_STIM_CURRENT_SIZE = 0xC3,
COMMAND_STIM_INTERVAL = 0xC4,
COMMAND_PULSE_WIDTH = 0xC5,
COMMAND_COLLECT_DATA = 0xC6,
COMMAND_IMPENDENCE_CHECK = 0xC7,
COMMAND_HEARTBEAT_CONTENT = 0xC8,
COMMAND_RESTART_OR_UPGRADE = 0xA0,
COMMAND_SET_SELF_TEST = 0xA3,
COMMANDM_IMPEDANCE_CALIBRATION = 0xA7,
COMMAND_READ_FRONT_SERIAL_NUMBER = 0xA9
};
void creatGUI();
void setPortName(QString name);
void connectDevice(QString name);
void receiveInfo();
void sandpack(QByteArray byteArray);
QByteArray writeCommandByteArray(int num, const QByteArray &data) const;
void setCollectionChannelSwitch(QString list);
private:
Ui::Widget *ui;
uint8_t kZero = 0x00;
QSerialPort *m_serialport =nullptr;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <Widget.h>
#include <Widget.h>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->setFixedSize(600,600);
m_serialport = new QSerialPort();
creatGUI();
}
Widget::~Widget()
{
delete ui;
}
void Widget::creatGUI()
{
QHBoxLayout *all = new QHBoxLayout();
QVBoxLayout *left = new QVBoxLayout();
QHBoxLayout *right = new QHBoxLayout();
QHBoxLayout *first = new QHBoxLayout();
QPushButton *portNameBtn = new QPushButton();
portNameBtn->setFixedSize(100,30);
portNameBtn->setText("portName");
QLineEdit *portNameEdit = new QLineEdit();
portNameEdit->setFixedSize(100,30);
first->setContentsMargins(0,0,0,0);
first->addStretch();
first->addWidget(portNameBtn);
first->addSpacing(5);
first->addWidget(portNameEdit);
first->addStretch();
connect(portNameBtn,&QPushButton::clicked,[this,portNameEdit](){connectDevice(portNameEdit->text());});
QHBoxLayout *second = new QHBoxLayout();
QPushButton *portNumBtn = new QPushButton();
portNumBtn->setFixedSize(100,30);
portNumBtn->setText("portNum");
QLineEdit *portNumEdit = new QLineEdit();
portNumEdit->setFixedSize(100,30);
portNumEdit->setText("1");
connect(portNumBtn,&QPushButton::clicked,[this,portNumEdit](){
connectDevice(portNumEdit->text());
});
second->setContentsMargins(0,0,0,0);
second->addStretch();
second->addWidget(portNumBtn);
second->addSpacing(5);
second->addWidget(portNumEdit);
second->addStretch();
left->setContentsMargins(0,0,0,0);
left->addSpacing(20);
left->addLayout(first);
left->addLayout(second);
left->addStretch();
right->setContentsMargins(0,0,0,0);
all->addLayout(left);
all->addStretch();
all->addLayout(right);
this->setLayout(all);
}
void Widget::connectDevice(QString name)
{
m_serialport->setPortName(name);
m_serialport->setBaudRate(115200, QSerialPort::AllDirections);
m_serialport->setDataBits(QSerialPort::Data8);
m_serialport->setFlowControl(QSerialPort::NoFlowControl);
m_serialport->setParity(QSerialPort::NoParity);
m_serialport->setStopBits(QSerialPort::OneStop);
if (m_serialport) {
m_serialport->deleteLater();
}
connect(m_serialport, &QSerialPort::readyRead, this, &Widget::receiveInfo);
if (m_serialport) {
if (m_serialport->isOpen()) {
m_serialport->close();
}
if (!m_serialport->open(QIODevice::ReadWrite)) {
qDebug() << m_serialport << "open serial port faill!";
}
}
}
void Widget::receiveInfo()
{
auto data = m_serialport->readAll();
//qDebug() << data;
}
void Widget::sandpack(QByteArray byteArray)
{
m_serialport->write(byteArray);
QThread::msleep(200);
}
QByteArray Widget::writeCommandByteArray(int num, const QByteArray& data) const
{
int dataLength = data.size();
QByteArray databig(reinterpret_cast<char*>(&dataLength), 2);
std::reverse(databig.begin(), databig.end());
QByteArray byteArray;
byteArray.append(0xEB);
byteArray.append(0x90);
byteArray.append(databig);
byteArray.append(2);
byteArray.append(0xC1);
byteArray.append(kZero);
byteArray.append(0x33);
byteArray.append(0x33);
QByteArray dataFlip(data, data.size());
std::reverse(dataFlip.begin(), dataFlip.end());
byteArray.append(dataFlip);
uint16_t sum = 0;
for (size_t i = 0; i < byteArray.size(); i++) {
sum = sum + (uint8_t)byteArray.at(i);
}
QByteArray checkByteArray(reinterpret_cast<char*>(&sum), 2);
std::reverse(checkByteArray.begin(), checkByteArray.end());
byteArray.append(checkByteArray);
return byteArray;
}
void Widget::setCollectionChannelSwitch(QString list)
{
QByteArray byteArray;
switch(list.toInt()){
case 1:{
byteArray.append(0x80);
break;
}
case 2:{
byteArray.append(0xc0);
break;
}
case 3:{
byteArray.append(0xe0);
break;
}
case 4:{
byteArray.append(0xf0);
break;
}
case 5:{
byteArray.append(0xf8);
break;
}
case 6:{
byteArray.append(0xfc);
break;
}
case 7:{
byteArray.append(0xfe);
break;
}
case 8:{
byteArray.append(0xff);
break;
}
};
sandpack(writeCommandByteArray(0,byteArray));
//sendPackage(m_nimPacakgeBuilder.writeCollectionChannelSwitch(stringToUint8(kChannelSwitchlist)));
}
#!/bin/sh
chmod 777 /etc/apt/sources.list
cat /dev/null > /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free" >> /etc/apt/sources.list
echo "# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free" >> /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free" >> /etc/apt/sources.list
echo "# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free" >> /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free" >> /etc/apt/sources.list
echo "# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free" >> /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free" >> /etc/apt/sources.list
echo "# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free" >> /etc/apt/source>
chmod 777 /etc/apt/sources.list.d/raspi.list
cat /dev/null > /etc/apt/sources.list.d/raspi.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free" >> /etc/apt/sources.list.d/raspi.list
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install qtbase5-dev qtchooser
sudo apt-get install qt5-qmake qtbase5-dev-tools
sudo apt-get install qtcreator
sudo apt-get install qtdeclarative5-dev
sudo apt install qml-module-qtquick-controls2
sudo apt install libqt5multimedia* qtmultimedia5-*
sudo apt-get install libqt5sql5-mysql
sudo apt-get install libqt5serialport5-dev
sudo apt install g++ gcc
sudo apt install cmake
sudo apt install qml-module-qt-labs-platform
sudo apt install qml-module-qtquick-extras
sudo apt install qt.labs.calendar