|
@@ -63,6 +63,7 @@ UartContext::~UartContext() {
|
|
|
}
|
|
|
|
|
|
static bool mUart1IsOpen = false;
|
|
|
+static bool mUart2IsOpen = false;
|
|
|
static bool mUart3IsOpen = false;
|
|
|
|
|
|
// 打开串口,pFileName为串口号,baudRate为波特率
|
|
@@ -70,12 +71,16 @@ bool UartContext::openUart(const char *pFileName, UINT baudRate) {
|
|
|
// LOGD("打开串口 串口号 = %s, 波特率 = %s\n", pFileName, getBaudRate(baudRate));
|
|
|
mUartID = open(pFileName, O_RDWR|O_NOCTTY); // mUartID等于打开的串口
|
|
|
|
|
|
+ LOGD("mUartNumber == %d", mUartNumber);
|
|
|
if (mUartID <= 0) {
|
|
|
mIsOpen = false;
|
|
|
- if(mUartNumber == 1) {
|
|
|
+ if (mUartNumber == 1) {
|
|
|
mUart1IsOpen = false;
|
|
|
}
|
|
|
- if(mUartNumber == 2) {
|
|
|
+ if (mUartNumber == 2) {
|
|
|
+ mUart2IsOpen = false;
|
|
|
+ }
|
|
|
+ if (mUartNumber == 3) {
|
|
|
mUart3IsOpen = false;
|
|
|
}
|
|
|
LOGD("uart%d open error", mUartNumber);
|
|
@@ -102,10 +107,13 @@ bool UartContext::openUart(const char *pFileName, UINT baudRate) {
|
|
|
mUartID = 0;
|
|
|
}
|
|
|
|
|
|
- if(mUartNumber == 1) {
|
|
|
+ if (mUartNumber == 1) {
|
|
|
mUart1IsOpen = true;
|
|
|
}
|
|
|
- if(mUartNumber == 3) {
|
|
|
+ if (mUartNumber == 2) {
|
|
|
+ mUart2IsOpen = true;
|
|
|
+ }
|
|
|
+ if (mUartNumber == 3) {
|
|
|
mUart3IsOpen = true;
|
|
|
}
|
|
|
|
|
@@ -194,36 +202,49 @@ bool UartContext::threadLoop() {
|
|
|
unsigned char buffer[1024] = {0};
|
|
|
int ret = read(mUartID, buffer, sizeof(buffer));
|
|
|
if (ret > 0) {
|
|
|
- if (buffer[0]==CMD_HEAD && buffer[ret-2] == CMD_END1 && buffer[ret-1] == CMD_END2){
|
|
|
- std::string revStr = "";
|
|
|
- //std::string logInfo = " <<< ";
|
|
|
- //依次将读取到的数据输出到日志
|
|
|
- for (int i = 0; i < ret; ++i) {
|
|
|
- if (i==0 || i==ret-1 || i==ret-2){
|
|
|
- continue;
|
|
|
+ if (mUartID == 32) {
|
|
|
+ if (buffer[0]==CMD_HEAD && buffer[ret-2] == CMD_END1 && buffer[ret-1] == CMD_END2){
|
|
|
+ std::string revStr = "";
|
|
|
+ //std::string logInfo = " <<< ";
|
|
|
+ //依次将读取到的数据输出到日志
|
|
|
+ for (int i = 0; i < ret; ++i) {
|
|
|
+ if (i==0 || i==ret-1 || i==ret-2){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //LOGD(" <<< %02x", buffer[i]);
|
|
|
+ revStr += buffer[i];
|
|
|
+ //logInfo += base::format("%02x",buffer[i]);
|
|
|
}
|
|
|
- //LOGD(" <<< %02x", buffer[i]);
|
|
|
- revStr += buffer[i];
|
|
|
- //logInfo += base::format("%02x",buffer[i]);
|
|
|
+ //LOGD(" %s",logInfo.c_str());
|
|
|
+ buildProtocolData(revStr);
|
|
|
}
|
|
|
- //LOGD(" %s",logInfo.c_str());
|
|
|
- buildProtocolData(revStr);
|
|
|
}
|
|
|
- else if (buffer[0] == 0xfe && buffer[2] == 0x03) {
|
|
|
- if (buffer[1] == 0x08) {
|
|
|
- std::string revStr = "";
|
|
|
- for (int i = 0; i < ret; ++i) {
|
|
|
- if (i==0 || i==1 || i==2 || i==3 || i==4 || i==ret-1){
|
|
|
- continue;
|
|
|
- }
|
|
|
- char buf[1024];
|
|
|
- sprintf(buf, "%02x", buffer[i]);
|
|
|
- revStr += buf;
|
|
|
- }
|
|
|
- LOGD("revStr == %s", revStr.c_str());
|
|
|
- nfcLogin(revStr);
|
|
|
+ else if (mUartID == 33) {
|
|
|
+ if (buffer[0] == 0xfe && buffer[2] == 0x03) {
|
|
|
+ if (buffer[1] == 0x08) {
|
|
|
+ std::string revStr = "";
|
|
|
+ for (int i = 0; i < ret; ++i) {
|
|
|
+ if (i==0 || i==1 || i==2 || i==3 || i==4 || i==ret-1){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ char buf[1024];
|
|
|
+ sprintf(buf, "%02x", buffer[i]);
|
|
|
+ revStr += buf;
|
|
|
+ }
|
|
|
+ LOGD("revStr == %s", revStr.c_str());
|
|
|
+ nfcLogin(revStr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (mUartID == 31) {
|
|
|
+ std::string revStr = "";
|
|
|
+ for (int i = 0; i < ret; ++i) {
|
|
|
+ char buf[1024];
|
|
|
+ sprintf(buf, "%02x", buffer[i]);
|
|
|
+ revStr += buf;
|
|
|
}
|
|
|
- }
|
|
|
+ LOGD("revStr == %s", revStr.c_str());
|
|
|
+ }
|
|
|
} else {
|
|
|
//没收到数据时,休眠50ms,防止过度消耗cpu
|
|
|
usleep(1000 * 50);
|
|
@@ -245,8 +266,8 @@ void UartContext::init() {
|
|
|
// uart0 = new UartContext(UART_TTYS0);
|
|
|
// uart0->openUart("/dev/ttyS0", B115200);
|
|
|
|
|
|
-// uart1 = new UartContext(UART_TTYS1);
|
|
|
-// uart1->openUart("/dev/ttyS1", B115200);
|
|
|
+ uart1 = new UartContext(UART_TTYS1);
|
|
|
+ uart1->openUart("/dev/ttyS1", B115200);
|
|
|
|
|
|
// 20221108的板子打开了串口2
|
|
|
uart2 = new UartContext(UART_TTYS2);
|
|
@@ -292,4 +313,5 @@ bool UartContext::sendTo(int uart, const BYTE* pData, UINT len) {
|
|
|
}
|
|
|
|
|
|
bool UartContext::Uart1IsOpen() {return mUart1IsOpen;}
|
|
|
+bool UartContext::Uart2IsOpen() {return mUart2IsOpen;}
|
|
|
bool UartContext::Uart3IsOpen() {return mUart3IsOpen;}
|