小编dso*_*ano的帖子

串行通信中的字节对齐

所以我试图为串行通信定义一个通信协议,我希望能够向设备发送4个字节的数字,但我不确定如何确保设备开始在正确的字节上拾取它.

例如,如果我想发送

0x1234abcd 0xabcd3f56 ...
Run Code Online (Sandbox Code Playgroud)

我如何确保设备不会在错误的位置开始读取并获得第一个单词:

0xabcdabcd
Run Code Online (Sandbox Code Playgroud)

这样做有一个聪明的方法吗?我想过用一个标记来开始一条消息,但如果我想发送我选择的数字作为数据呢?

serial-port communication-protocol

2
推荐指数
2
解决办法
5322
查看次数

当我使用strtok()时,有没有办法挑出个别令牌?

如果我有一个字符串: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)

c strtok

2
推荐指数
1
解决办法
490
查看次数

在scoped_lock上解锁的无关紧要

在以下博文中:

http://www.justsoftwaresolutions.co.uk/threading/implementing-a-thread-safe-queue-using-condition-variables.html

有一个'推送'方法定义如下:

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)

我的问题是:

  1. 为什么在scoped_lock变量上调用了一个显式的'lock.unlock()'?

  2. 它的目的是什么?

  3. 是否可以安全删除,导致'notify_one'方法调用在scoped_mutex的范围内?

c++ multithreading mutex condition-variable thread-safety

2
推荐指数
1
解决办法
750
查看次数

如何使用C#应用程序重置Arduino Mega2560?

我注意到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)

重置似乎按预期工作.

c# serial-port arduino reset

2
推荐指数
1
解决办法
3725
查看次数

在后台进程中捕获串行数据

我目前正在尝试在python脚本中捕获串行数据.我打算开始捕获串行端口上捕获的所有数据的日志,同时脚本的其余部分继续与我正在测试的系统交互.

如果我使用pyserial,我相信它最终将阻止我想要执行的其余测试,直到我完成日志记录.

我考虑过的选择是:

  • 编写另一个脚本以使用pyserial捕获日志,使用subprocess.Popen()调用此脚本
  • 使用内置的unix工具,如tail或cat,并使用subprocess.Popen()调用它们

我相信我可以找到一种方法让其中任何一种工作,但如果有人知道更直接的方式,那么我很想知道.

先感谢您.

python subprocess serial-port pyserial

2
推荐指数
1
解决办法
4338
查看次数

将JavaScript代码放在单独的文件中不起作用

我正在使用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,以便我可以重现问题. …

javascript guiders.js

2
推荐指数
1
解决办法
1万
查看次数

Arduino串行通信未收到整个消息

我对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 ++控制台应用程序中遇到过这种行为.

serial-port communication arduino

2
推荐指数
1
解决办法
3944
查看次数

C#串口通讯

如何使用C#从USB通讯端口发送和接收数据?

沟通的要求是:

  • 115.2 kBaud
  • 8位字符大小
  • 1站点
  • 没有平价

c# usb serial-port virtual-serial-port

2
推荐指数
1
解决办法
2万
查看次数

如何构建和发送十六进制命令到电视

我有一台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)

python serial-port pyserial

2
推荐指数
1
解决办法
7382
查看次数

在sql中自动生成序列号

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 作为自动增量

sql serial-number

2
推荐指数
1
解决办法
4万
查看次数