Parcourir la source

修改瑞迪莱消息的解析

vothin il y a 2 mois
Parent
commit
cd58ca3b0b

+ 1 - 0
.cproject

@@ -159,4 +159,5 @@
 		</scannerConfigBuildInfo>
 	</storageModule>
 	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+	<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
 </cproject>

+ 2 - 2
.settings/language.settings.xml

@@ -5,7 +5,7 @@
 			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
 			<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
 			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
-			<provider class="com.flythings.ide.managedbuilder.CrossGCCBuiltinSpecsDetector" console="false" env-hash="198904967764880793" id="flythings.managedbuild.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="Cross Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+			<provider class="com.flythings.ide.managedbuilder.CrossGCCBuiltinSpecsDetector" console="false" env-hash="-40669062764596657" id="flythings.managedbuild.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="Cross Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
 				<language-scope id="org.eclipse.cdt.core.gcc"/>
 				<language-scope id="org.eclipse.cdt.core.g++"/>
 			</provider>
@@ -17,7 +17,7 @@
 			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
 			<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
 			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
-			<provider class="com.flythings.ide.managedbuilder.CrossGCCBuiltinSpecsDetector" console="false" env-hash="198904967764880793" id="flythings.managedbuild.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="Cross Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+			<provider class="com.flythings.ide.managedbuilder.CrossGCCBuiltinSpecsDetector" console="false" env-hash="-40669062764596657" id="flythings.managedbuild.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="Cross Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
 				<language-scope id="org.eclipse.cdt.core.gcc"/>
 				<language-scope id="org.eclipse.cdt.core.g++"/>
 			</provider>

BIN
Release/libzkgui.so


BIN
Release/src/activity/mainActivity.o


BIN
Release/src/service/time.o


BIN
Release/src/uart/UartContext.o


+ 1 - 1
src/logic/mainLogic.cc

@@ -63,7 +63,7 @@ public:
 
 				// tcp
 				StoragePreferences::putString(STORE_TCP_LOCAL_IP, root["tcp_local_ip"].asString());
-				StoragePreferences::putInt(STORE_TCP_PORT, root["tcp_port"].asInt());
+//				StoragePreferences::putInt(STORE_TCP_PORT, root["tcp_port"].asInt());
 
 				serverInfoInited = true;
 				return true;

+ 52 - 2
src/uart/UartContext.cpp

@@ -384,6 +384,53 @@ void s433Data(int ret, unsigned char* buffer) {
 	s433DataInit();
 }
 
+
+static unsigned char rdlWatchBuffer[1024] = {0};
+static int rdlWatchBufferSize = 0;
+static constexpr char FRAME_END[2] = {0x0D, 0x0A}; // 帧结束标记
+static std::string rdlWatchDataStr = "";
+void rdlWatch(int ret, const unsigned char* buffer) {
+    if (ret <= 0 || buffer == nullptr) return;
+
+    // 追加数据(自动防溢出)
+    const int copySize = std::min(ret, static_cast<int>(sizeof(rdlWatchBuffer) - rdlWatchBufferSize));
+    memcpy(rdlWatchBuffer + rdlWatchBufferSize, buffer, copySize);
+    rdlWatchBufferSize += copySize;
+
+    // 查找完整帧
+    while (rdlWatchBufferSize >= 2) { // 至少需要2字节才能判断帧尾
+        // 查找帧结束标记(从后往前找更高效)
+        bool found = false;
+        int frameEndPos = -1;
+
+        for (int i = rdlWatchBufferSize - 2; i >= 0; --i) {
+            if (rdlWatchBuffer[i] == FRAME_END[0] &&
+                rdlWatchBuffer[i+1] == FRAME_END[1]) {
+                frameEndPos = i;
+                found = true;
+                break;
+            }
+        }
+
+        if (found) {
+            const int frameSize = frameEndPos + 2; // 包含结束符的完整帧长度
+            rdlWatchDataStr.assign(rdlWatchBuffer, rdlWatchBuffer + frameEndPos); // 不包含结束符
+
+            std::string msg = "t10" + rdlWatchDataStr;
+            TcpClient::instance()->sendMsg(msg.c_str());
+
+            // 移除已处理数据(包括结束符)
+            const int remaining = rdlWatchBufferSize - frameSize;
+            if (remaining > 0) {
+                memmove(rdlWatchBuffer, rdlWatchBuffer + frameSize, remaining);
+            }
+            rdlWatchBufferSize = remaining;
+        } else {
+            break; // 没有完整帧,等待更多数据
+        }
+    }
+}
+
 bool UartContext::threadLoop() {
 	if (mIsOpen) {
 		unsigned char buffer[1024] = {0};
@@ -396,8 +443,8 @@ bool UartContext::threadLoop() {
 				revStr += base::format("%02x",buffer[i]);
 				revStr2 += buffer[i];
 			}
-			LOGD("串口 %d 收到消息: %s", mUartNumber, revStr.c_str());
-			LOGD("串口 %d 收到消息: %s", mUartNumber, revStr2.c_str());
+			LOGD("串口 %d 收到源码消息: %s", mUartNumber, revStr.c_str());
+			LOGD("串口 %d 收到转换消息: %s", mUartNumber, revStr2.c_str());
 
 			std::string msgText = "串口" + std::to_string(mUartNumber) + ":" + revStr2;
 			setUartList(msgText);
@@ -414,6 +461,9 @@ bool UartContext::threadLoop() {
 				if (uartBaudRate3 == B9600) {
 					particleData(ret, buffer);
 				}
+				else {
+					rdlWatch(ret, buffer);
+				}
 			}
 			else if (mUartNumber == 1) {
 				if (uartBaudRate1 == B9600) {