11<script setup lang="ts">
22import { SerialHelper } from ' ../utils/SerialHelper'
33import { ConfigManager } from ' ../utils/ConfigManager'
4+ import { ElMessage } from ' element-plus'
45
56import { EventCenter , EventNames } from ' ../utils/EventCenter'
67
@@ -24,7 +25,7 @@ const sendData = () => {
2425 if (sendConfig .value .addChecksum ) {
2526 data = serialHelper .appendChecksum (data )
2627 }
27-
28+ // console.log('发送数据:', data, serialHelper.uint8ArrayToString(data))
2829 eventCenter .emit (EventNames .SERIAL_SEND , data )
2930
3031 // 添加到历史记录
@@ -36,13 +37,24 @@ const sendData = () => {
3637 }
3738 } catch (error ) {
3839 console .error (' 发送数据时出错:' , error )
40+ ElMessage .error (' 发送数据时出错' + error )
3941 eventCenter .emit (EventNames .SERIAL_ERROR , { message: error instanceof Error ? error .message : ' 发送数据时出错' })
42+ return false
4043 }
44+ return true
4145}
4246
4347const toggleAutoSend = () => {
4448 if (sendConfig .value .autoSend ) {
45- autoSendTimer = window .setInterval (sendData , sendConfig .value .autoSendInterval )
49+ autoSendTimer = window .setInterval (() => {
50+ if (! sendData ()) {
51+ if (autoSendTimer ) {
52+ clearInterval (autoSendTimer )
53+ autoSendTimer = null
54+ }
55+ sendConfig .value .autoSend = false
56+ }
57+ }, sendConfig .value .autoSendInterval )
4658 } else if (autoSendTimer ) {
4759 clearInterval (autoSendTimer )
4860 autoSendTimer = null
@@ -112,7 +124,7 @@ const handleKeyDown = (e: KeyboardEvent) => {
112124 <el-switch v-model =" sendConfig.isHexSend" active-text =" HEX" inactive-text =" TEXT" class =" me-2" />
113125 <div class =" me-2" style =" display : inline-block ;" >
114126 <el-checkbox v-model =" sendConfig.addCRLF" label =" " class =" " style =" vertical-align : middle ;" />
115- <el-select v-model =" sendConfig.addCRLFType" size =" small" style =" width : 80px ;" >
127+ <el-select v-model =" sendConfig.addCRLFType" size =" small" style =" width : 80px ;" @change = " sendConfig.addCRLF = true " >
116128 <el-option :value =" '\r\n'" label =" CRLF(\r\n)" />
117129 <el-option :value =" '\r'" label =" CR(\r)" />
118130 <el-option :value =" '\n'" label =" LF(\n)" />
@@ -121,7 +133,7 @@ const handleKeyDown = (e: KeyboardEvent) => {
121133 </div >
122134 <el-checkbox v-model =" sendConfig.addChecksum" label =" 校验和" class =" me-2" />
123135 <el-checkbox v-model =" sendConfig.autoSend" @change =" toggleAutoSend" label =" 自动发送" class =" me-2" />
124- <el-input-number v-model =" sendConfig.autoSendInterval" :min = " 100 " :max = " 10000 " : step =" 100" @change =" handleIntervalChange" size =" small" class =" me-2" title =" 自动发送时间间隔" >
136+ <el-input-number v-model =" sendConfig.autoSendInterval" :step =" 100" @change =" handleIntervalChange" size =" small" class =" me-2" title =" 自动发送时间间隔" >
125137 <template #suffix >
126138 <span >ms</span >
127139 </template >
@@ -133,7 +145,7 @@ const handleKeyDown = (e: KeyboardEvent) => {
133145 v-model =" sendConfig.content"
134146 type =" textarea"
135147 :rows =" 5"
136- :placeholder =" sendConfig.isHexSend ? '请输入HEX格式数据,如:49 54 4C 44 47 ' : '请输入要发送的文本'"
148+ :placeholder =" sendConfig.isHexSend ? '请输入HEX格式数据,如:AA BB CC 11 22 ' : '请输入要发送的文本'"
137149 @keydown =" handleKeyDown"
138150 />
139151 </div >
0 commit comments