如何解决发送文本输入为字节[]
我想通过WebSockets从网页上的文本输入中发送IP地址到我的Arduino,在这里我希望这样处理而不是将其作为char *。
到目前为止我写的是:
HTML:
<tr id="network1" style="display: none;">
<th>Client IP</th>
<th>
<input type="text" maxlength="3" class="ipInput" id="inputClientIP1" oninput="checkClientIP()">
.
<input type="text" maxlength="3" class="ipInput" id="inputClientIP2" oninput="checkClientIP()">
.
<input type="text" maxlength="3" class="ipInput" id="inputClientIP3" oninput="checkClientIP()">
.
<input type="text" maxlength="3" class="ipInput" id="inputClientIP4" oninput="checkClientIP()">
</div>
</th>
</tr>
JS通过Websocket发送数据:
function sendData(){
ws.send(document.getElementById("inputClientIP1").value + "," + document.getElementById("inputClientIP2").value + "," + document.getElementById("inputClientIP3").value + "," + document.getElementById("inputClientIP4").value
};
arduino仅将IP当作一个字符*。
被发送的消息是"192,168,178,100"
是否有一个好的方法可以将IP作为字节获取?
PS我试图将输入更改为type="number"
,但没有其他结果
解决方法
好吧,value
属性通常是字符串
即使您将类型更改为数字,也仍会使用+","
将其转换为字符串,因此结果始终是字符串
没有确切了解Arduino如何处理Web套接字代码,就不可能知道它是如何工作的,但是如果您想在Web套接字中一般发送二进制数据,则可以制作一个uint8array并将其发送
ws.binaryType = 'arraybuffer';
var buf = new ArrayBuffer (4)
var byteArr = new Uint8Array(buf)
byteArr[0] = parseInt(document.getElementById("inputClientIP1").value)
byteArr[1] = parseInt(document.getElementById("inputClientIP2").value)
byteArr[2] = parseInt(document.getElementById("inputClientIP3").value)
byteArr[3] = parseInt(document.getElementById("inputClientIP4").value)
we.send(byteArr)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。