52 #include <QMessageBox>
54 #include <QSerialPort>
55 #include <QSerialPortInfo>
117 m_qSerialPort.close();
118 std::cout <<
"Port closed" << std::endl;
129 t_incomingArray[0]=t_incomingArray[0] << 2;
131 char cVal = t_incomingArray[0];
132 void* voidVal = (
void*)&cVal;
133 unsigned char* ucVal = (
unsigned char*)voidVal;
137 if (*ucVal== 0x00) {AnChannel=1;}
138 else if (*ucVal==0x10) {AnChannel=2;}
139 else if (*ucVal==0x20) {AnChannel=3;}
140 else if (*ucVal==0x40) {AnChannel=4;}
141 else if (*ucVal==0x80) {AnChannel=5;}
142 else if (*ucVal==0x30) {AnChannel=6;}
143 else if (*ucVal==0x50) {AnChannel=7;}
144 else if (*ucVal==0x90) {AnChannel=8;}
145 else if (*ucVal==0x60) {AnChannel=9;}
146 else if (*ucVal==0xA0) {AnChannel=10;}
147 else if (*ucVal==0xC0) {AnChannel=11;}
148 else if (*ucVal==0x70) {AnChannel=12;}
149 else if (*ucVal==0xB0) {AnChannel=13;}
150 else if (*ucVal==0xD0) {AnChannel=14;}
151 else if (*ucVal==0xE0) {AnChannel=15;}
152 else if (*ucVal==0xF0) {AnChannel=16;}
153 else {std::cout <<
"Error during analog channel selection" << std::endl;}
179 t_incomingArray[1]=t_incomingArray[1] >> 2;
180 t_incomingArray[2]=t_incomingArray[2] >> 2;
181 t_incomingArray[3]=t_incomingArray[3] >> 2;
183 if ((t_incomingArray[1]&0x08) == 0x08) {AnValue=AnValue+32768;}
184 if ((t_incomingArray[1]&0x04) == 0x04) {AnValue=AnValue+16384;}
185 if ((t_incomingArray[1]&0x02) == 0x02) {AnValue=AnValue+8192;}
186 if ((t_incomingArray[1]&0x01) == 0x01) {AnValue=AnValue+4096;}
187 if ((t_incomingArray[2]&0x20) == 0x20) {AnValue=AnValue+2048;}
188 if ((t_incomingArray[2]&0x10) == 0x10) {AnValue=AnValue+1024;}
189 if ((t_incomingArray[2]&0x08) == 0x08) {AnValue=AnValue+512;}
190 if ((t_incomingArray[2]&0x04) == 0x04) {AnValue=AnValue+256;}
191 if ((t_incomingArray[2]&0x02) == 0x02) {AnValue=AnValue+128;}
192 if ((t_incomingArray[2]&0x01) == 0x01) {AnValue=AnValue+64;}
193 if ((t_incomingArray[3]&0x20) == 0x20) {AnValue=AnValue+32;}
194 if ((t_incomingArray[3]&0x10) == 0x10) {AnValue=AnValue+16;}
195 if ((t_incomingArray[3]&0x08) == 0x08) {AnValue=AnValue+8;}
196 if ((t_incomingArray[3]&0x04) == 0x04) {AnValue=AnValue+4;}
197 if ((t_incomingArray[3]&0x02) == 0x02) {AnValue=AnValue+2;}
198 if ((t_incomingArray[3]&0x01) == 0x01) {AnValue=AnValue+1;}
200 std::cout <<
"Analog channel: " << AnChannel <<
" | Value:" << AnValue << std::endl;
210 std::cout <<
"Decode Digital" << std::endl;
214 if ((p_incomingArray.at(3)&0x04) == 0x04)
m_InActiveDig[0] = 1;
217 if ((p_incomingArray.at(3)&0x08) == 0x08)
m_InActiveDig[1] = 1;
220 if ((p_incomingArray.at(3)&0x10) == 0x10)
m_InActiveDig[2] = 1;
223 if ((p_incomingArray.at(3)&0x20) == 0x20)
m_InActiveDig[3] = 1;
226 for (
int i = 1; i<5;i++)
227 std::cout <<
"Channel " << i <<
": " <<
m_InActiveDig[i-1] << std::endl;
256 else {std::cout <<
"Fehler bei Motorauswahl" << std::endl;}
264 QByteArray posArray = 0;
268 posArray [0]= posArray [0]|0x80;
269 posArray [1]= posArray [1]|0x40;
270 posArray [2]= posArray [2]|0x20;
271 posArray [3]= posArray [3]|0x10;
272 posArray [4]= posArray [4]|0x08;
273 posArray [5]= posArray [5]|0x04;
279 if (i>2048 && i<32769) {j=1; k=2;}
else if (i>32 && i<2049) {j=2; k=0;}
else {j=3;k=0;};
287 if (i>2048 && i<32769) {j=1; k++;}
else {j=0;}
296 if (i>32 && i<2049) {j=2; k++;}
else {j=0;}
305 if (i>0 && i<33) {j=3; k++;}
else {j=0;}
391 else {std::cout <<
"Error while retrieving analog channel information" << std::endl;}
393 else std::cout <<
" Error while encoding retrieve data array" << std::endl;
402 m_currentSettings.name =
"";
403 m_currentSettings.baudRate = QSerialPort::Baud115200;
404 m_currentSettings.stringBaudRate =
"115200";
405 m_currentSettings.dataBits = QSerialPort::Data8;
406 m_currentSettings.stringDataBits =
"8";
407 m_currentSettings.parity = QSerialPort::NoParity;
408 m_currentSettings.stringParity =
"None";
409 m_currentSettings.stopBits = QSerialPort::OneStop;
410 m_currentSettings.stringStopBits =
"1";
411 m_currentSettings.flowControl = QSerialPort::NoFlowControl;
412 m_currentSettings.stringFlowControl =
"None";
419 QList<QSerialPortInfo> t_qListPortInfo = QSerialPortInfo::availablePorts();
421 bool t_correctPort =
false;
423 for (
int t_count = 0; t_count < t_qListPortInfo.size();t_count++)
425 if (t_qListPortInfo[t_count].description() ==
"Silicon Labs CP210x USB to UART Bridge")
428 t_correctPort =
true;
429 m_currentSettings.name = t_qListPortInfo[t_count].portName();
430 m_qSerialPort.setPortName( t_qListPortInfo[t_count].portName());
436 std::cout <<
"Correct port was found" << std::endl;
438 std::cout <<
"correct port was not found" << std::endl;
446 QByteArray t_incomingArray = m_qSerialPort.readAll();
448 if(((t_incomingArray[0]&0x03) == 0x00) && ((t_incomingArray[1]&0x03) == 0x01) && ((t_incomingArray[2]&0x03) == 0x02) && ((t_incomingArray[3]&0x03) == 0x03))
450 if ((t_incomingArray[0]&0xC0) == 0x00)
453 else if ((t_incomingArray[0]&0xC0) == 0x40)
457 std::cout <<
"Error while reading the data. Correct transfer protocol?" << std::endl;
467 bool success =
false;
470 m_qSerialPort.setPortName(m_currentSettings.name);
472 if (m_qSerialPort.open(QIODevice::ReadWrite))
474 if (m_qSerialPort.setBaudRate(m_currentSettings.baudRate)
475 && m_qSerialPort.setDataBits(m_currentSettings.dataBits)
476 && m_qSerialPort.setParity(m_currentSettings.parity)
477 && m_qSerialPort.setStopBits(m_currentSettings.stopBits)
478 && m_qSerialPort.setFlowControl(m_currentSettings.flowControl))
480 std::cout <<
"Port opened, with:"
481 <<
"Name" << m_currentSettings.name.toLatin1().data()
482 <<
"BaudRat" << m_currentSettings.stringBaudRate.toLatin1().data()
483 <<
"Databits" << m_currentSettings.stringDataBits.toLatin1().data()
484 <<
"Parity" << m_currentSettings.stringParity.toLatin1().data()
485 <<
"FlowControl" << m_currentSettings.stringFlowControl.toLatin1().data() << std::endl;
487 std::cout <<
"geöffnet, mit:"
488 <<
"Name" << m_currentSettings.name.toLatin1().data()
489 <<
"BaudRat" << m_currentSettings.stringBaudRate.toLatin1().data()
490 <<
"Databits" << m_currentSettings.stringDataBits.toLatin1().data()
491 <<
"Parity" << m_currentSettings.stringParity.toLatin1().data()
492 <<
"FlowControl" << m_currentSettings.stringFlowControl.toLatin1().data() << std::endl;
493 std::cout <<
"geöffnet, mit:"
494 <<
" Name: " << m_currentSettings.name.toLatin1().data()
495 <<
", BaudRate: " << m_currentSettings.stringBaudRate.toLatin1().data()
496 <<
", Databits: " << m_currentSettings.stringDataBits.toLatin1().data()
497 <<
", Parity: " << m_currentSettings.stringParity.toLatin1().data()
498 <<
", FlowControl: " << m_currentSettings.stringFlowControl.toLatin1().data() << std::endl;
503 { std::cout <<
"Port was not opened, configuration failed" << std::endl;
504 m_qSerialPort.close();
512 std::cout <<
"Port could not be opened" << std::endl;
524 m_qSerialPort.write(data);
QVector< int > m_InAnChannelVal
Contains the declaration of the SerialPort class.
void decodedig(QByteArray &t_incomingArray)
void decodeana(QByteArray &t_incomingArray)
QVector< int > m_InActiveDig
void sendData(const QByteArray &data)
QVector< int > m_digchannel