所以我试图为串行通信定义一个通信协议,我希望能够向设备发送4个字节的数字,但我不确定如何确保设备开始在正确的字节上拾取它.
例如,如果我想发送
0x1234abcd 0xabcd3f56 ...
Run Code Online (Sandbox Code Playgroud)
我如何确保设备不会在错误的位置开始读取并获得第一个单词:
0xabcdabcd
Run Code Online (Sandbox Code Playgroud)
这样做有一个聪明的方法吗?我想过用一个标记来开始一条消息,但如果我想发送我选择的数字作为数据呢?
如果我有一个字符串:Hi:my:name:is:lacrosse1991:我怎么能strtok用来检索is(换句话说第四个字段)?这将类似于你在bash中使用cut的方式,我会这样做cut -d ":" -f 4.如果这是一个错误的功能做这样的事情,请让我知道,任何帮助非常感谢,谢谢!(我刚刚开始自学C语言,如果这些是我要求的明显问题,我会提前道歉)
这是我将使用的剪切命令的示例
x=$(echo "$death" | cut -d ':' -f 4)
y=$(echo "$death" | cut -d ':' -f 5)
z=$(echo "$death" | cut -d ':' -f 6)
Run Code Online (Sandbox Code Playgroud) 在以下博文中:
有一个'推送'方法定义如下:
void push(Data const& data)
{
boost::mutex::scoped_lock lock(the_mutex);
the_queue.push(data);
lock.unlock();
the_condition_variable.notify_one();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
为什么在scoped_lock变量上调用了一个显式的'lock.unlock()'?
它的目的是什么?
是否可以安全删除,导致'notify_one'方法调用在scoped_mutex的范围内?
我注意到Arduino IDE会在启动/退出时由内置的串行应用程序自动重置
其中一条FT232RL的硬件流控制线(DTR)通过100纳法的电容连接到ATmega1280的复位线.当该线被置位(被拉低)时,复位线下降足够长的时间以复位芯片.
我注意到我的串行C#应用程序不会发生这种行为.我希望重置功能可以与我的C#应用程序一起使用.我没有做什么让我的C#应用程序重置我的Arduino Mega?
Arduino和C#的工作代码:
通过将PWM Port12的电线连接到RESET端口,我在大约5分钟内完成了工作.在Arduino上,我检查了传入的SerialEvent3上的文本RESET.当找到RESET时:
pinMode(7, OUTPUT);
digitalWrite(7, LOW);
Run Code Online (Sandbox Code Playgroud)
至于C#,它很简单:
if (serialPort1.IsOpen)
{
serialPort1.Write("RESET");
}
Run Code Online (Sandbox Code Playgroud)
重置似乎按预期工作.
我目前正在尝试在python脚本中捕获串行数据.我打算开始捕获串行端口上捕获的所有数据的日志,同时脚本的其余部分继续与我正在测试的系统交互.
如果我使用pyserial,我相信它最终将阻止我想要执行的其余测试,直到我完成日志记录.
我考虑过的选择是:
我相信我可以找到一种方法让其中任何一种工作,但如果有人知道更直接的方式,那么我很想知道.
先感谢您.
我正在使用Optimizely guiders.js示例代码:
http://jeffpickhardt.com/guiders/
虽然如果我提取JavaScript代码并将其放在单独的文件中,则指导者不会加载.
这是编辑过的HTML:
<html>
<head>
<!-- guider.js requires jQuery as a prerequisite. Be sure to load guider.js AFTER jQuery. -->
<script type="text/javascript" src="jquery-1.5.1.min.js"></script>
<script type="text/javascript" src="guider.js"></script>
<script type="text/javascript" src="guidedTour.js"></script>
<link rel="stylesheet" href="guider.css" type="text/css" />
</head>
<body>
<span id="clock" style="border: 2px solid #333; width: 300px; height: 200px; text-align: center;" onclick="guider.next();">
<br />
<img src="clock.gif" width=150 height=150 />
</span>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我guidedTour.js在同一目录中包含所有JavaScript代码.所有.js文件也在同一目录中.并且代码在单独的文件中提取之前有效.
当JavaScript位于单独的文件中时,指南不会加载.
我在Chrome中收到以下错误:
"未捕获的TypeError:无法读取null jquery-1.5.1.min.js的属性'clientHeight':16"
尝试更新版本的jQuery会引发错误guiders.js.无论如何,它似乎与我保留JavaScript代码的行为不同index.html.
我为工作代码创建了一个jsfiddle:http: //jsfiddle.net/vpMQy/
我不知道如何在单独的文件中使用JavaScript创建类似的jsfiddle,以便我可以重现问题. …
我对Arduino通信有疑问.这很难描述,所以我不能在标题中使用它.无论如何,这里有以下内容:
所以我的接收端有这个代码:
if(Serial1.available())
{
while(Serial1.available())
{
uint8_t inByte = Serial1.read();
inByte = inByte ^ k;
Serial.write(inByte);
}
Serial.println(" done");
}
Run Code Online (Sandbox Code Playgroud)
它应该在一行打印并在完成后打印完成.在Serial1.available()似乎跳过下Serial1.available(),我不知道发生了什么事情.无论如何这里是我当前的,坏的,输出:
h done
e done
l done
l done
o done
done
Run Code Online (Sandbox Code Playgroud)
应该是什么时候:
hello done
Run Code Online (Sandbox Code Playgroud)
我很抱歉,如果这可以说得更好但是现在我可以打字,我的大脑有点痛苦.我从未在Windows c ++控制台应用程序中遇到过这种行为.
如何使用C#从USB通讯端口发送和接收数据?
沟通的要求是:
我有一台NEC PX-42VM5HA等离子电视,我试图用连接的电脑控制.我有数据表,显示控制电视和协议信息的所有代码.我不确定如何在python中构建正确的数据结构来发送HEX控制代码.以下是电源控制代码和通信协议.
Communication Protocol:
Interface: RS-232C
Communication: Asynchronous
Baud Rate: 9600
Data Length: 8bits
Parity: Odd
Stop Bit: 1bit
Communication Code: Hex
Power Control Codes
ON 9FH 80H 60H 4EH 00H CDH
OFF 9FH 80H 60H 4FH 00H CEH
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止的代码:
import time
import serial
ser = serial.Serial(
port='COM1',
baudrate=9600,
parity=serial.PARITY_ODD,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
)
ser.close()
ser.open()
ser.isOpen()
ON=bytearray([0x9FH,0x80H,0x60H,0x4EH,0x00H,0xCDH])
OFF=bytearray([0x9FH,0x80H,0x60H,0x4FH,0x00H,0xCEH])
ser.write(OFF)
time.sleep(30)
ser.write(ON)
ser.close()
Run Code Online (Sandbox Code Playgroud) table orders
+----+--------+------------+
|s.no| id | ordername |
+----+--------+------------+
| 1 | 34 | name |
+----+--------+------------+
| 2 | 35 | name |
+----+--------+------------+
| 3 | 36 | name |
+----+--------+------------+
| 4 | 37 | name |
+----+--------+------------+
| 5 | 38 | name |
+----+--------+------------+
Run Code Online (Sandbox Code Playgroud)
编写自动生成序列号的查询,当我从 sql 中删除订单时,序列号在 serial_number 行中应为 1234567,我使用订单 ID 作为自动增量
serial-port ×6
arduino ×2
c# ×2
pyserial ×2
python ×2
c ×1
c++ ×1
guiders.js ×1
javascript ×1
mutex ×1
reset ×1
sql ×1
strtok ×1
subprocess ×1
usb ×1