标签: uart

跨线程操作无效:控制'textBox1'从其创建的线程以外的线程访问

我想从微控制器发送温度值,使用UART到C#接口和显示温度开启Label.Content.这是我的微控制器代码:

while(1) {
   key_scan(); // get value of temp
   if (Usart_Data_Ready())
   {
      while(temperature[i]!=0)
      {
         if(temperature[i]!=' ')
         {
            Usart_Write(temperature[i]);
            Delay_ms(1000);
         }
         i = i + 1;
      }
      i =0;
      Delay_ms(2000);
   }
}
Run Code Online (Sandbox Code Playgroud)

我的C#代码是:

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
   txt += serialPort1.ReadExisting().ToString();
   textBox1.Text = txt.ToString();
}
Run Code Online (Sandbox Code Playgroud)

但是异常出现了" 跨线程操作无效:控制'textBox1'从一个线程访问,而不是在它创建的线程上 "请告诉我如何从我的微控制器获取温度字符串并删除此错误!

c# multithreading invoke uart

169
推荐指数
6
解决办法
33万
查看次数

波特率和比特率有什么区别?

我真的很难理解差异.有人说他们是一样的,而另一些人说有一点点差别.究竟有什么区别?如果你用一些比喻来解释,我希望如此.

microcontroller serial-communication bitrate uart baud-rate

60
推荐指数
5
解决办法
12万
查看次数

UART与I2C对SPI,用于微控制器之间的处理器间通信

我正在研究一种连接两个微控制器的方法.在序列化的层面上,我正在考虑使用Nano protobuffers(http://code.google.com/p/nanopb/).这样我就可以编码/解码消息并在两个处理器之间发送它们.

基本上,一个小型处理器将是RPC服务器,能够执行多个功能.较大的处理器将通过发送的消息调用RPC,然后当数据准备好时,它将从较小的处理器读取它.

使用UART,I2C或SPI的优缺点是什么?

邮件将在发送之前放入邮箱中.

最好的问候,Drasko

embedded microcontroller spi i2c uart

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

未为uart串行驱动程序创建/ dev/tty*的设备节点

我在使用mdev规则运行busybox的嵌入式Linux中编写了一个简单的UART串行驱动程序.我在驱动程序代码中提供.dev_name了" ttyC2C".

static struct uart_driver serial_omap_reg = {
   .owner      = THIS_MODULE,
   .driver_name   = "Omap-C2C-Serial",
   .dev_name   = "ttyC2C",
   .nr      = OMAP_MAX_HSUART_PORTS,
   .cons    = NULL,
};
Run Code Online (Sandbox Code Playgroud)

但是,节点正在创建中

./sys/devices/platform/omap_c2c_uart.0/tty/ttyC2C0
./sys/class/tty/ttyC2C0

/ # ls -l ./sys/class/tty/ttyC2C0
lrwxrwxrwx    1 root     0                0 Jan  1 00:14 ./sys/class/tty/ttyC2C0 -> ../../devices/platform/omap_c2c_uart.0/tty/ttyC2C0

/ # ls -l ./sys/devices/platform/omap_c2c_uart.0/tty/ttyC2C0
-r--r--r--    1 root     0             4096 Jan  1 00:14 dev
lrwxrwxrwx    1 root     0                0 Jan  1 00:14 device -> ../../../omap_c2c_uart.0
drwxr-xr-x    2 root     0                0 Jan  1 00:14 power …
Run Code Online (Sandbox Code Playgroud)

linux serial-port linux-device-driver linux-kernel uart

14
推荐指数
1
解决办法
6307
查看次数

是否可以在没有stdlibs的情况下写入控制台?C/C++

我正在使用arm微处理器进行编程,并尝试通过UART使用print语句进行调试.我不想stdlibs只为调试添加.有没有办法打印到控制台没有stdio.h/ iostream.h?我可以写自己的printf()吗?

或者,我可以使用DMA控制器直接写入UART.但是,我想避免这是可能的.使用内置测试功能"echo"或"remote loop-back"我知道我已正确配置UART.

c c++ microcontroller uart

10
推荐指数
1
解决办法
3034
查看次数

为什么忽略我的缓冲区长度?

我正在开发一个小型硬件项目的接收器.我正在使用UART传输数据的小板.
接收器代码如下所示,我将在短期内单独解释有问题的位.

#define TTY "/dev/ttys002"

#include <stdio.h>
#include <string.h>
#include <unistd.h> //Unix standard functions
#include <fcntl.h> //File controls
#include <errno.h> //Error numbers
#include <assert.h>
#include <termios.h> //Posix terminal

int open_port(const char * tty) {
    int fd;
    fd = open(tty, (O_RDWR | O_NOCTTY | O_NDELAY));
    assert("__failed to open port__" && fd != -1);
    //Block until read
    fcntl(fd, F_SETFL, 0);
    return fd;
}

void configure_port(int fd) {
    struct termios options;
    //Get current options
    tcgetattr(fd, &options);

    //9600 Baud
    cfsetispeed(&options, B9600);
    cfsetospeed(&options, B9600);

    //Receive …
Run Code Online (Sandbox Code Playgroud)

c uart

10
推荐指数
1
解决办法
349
查看次数

ARM:通过UART读取modbus数据失败

我试图在ARM板上使用UART连接从RS485适配器读取寄存器但没有成功

连接器

从设备连接到ARM板

能量功率计< - rx/tx电缆 - > SENA RS485适配器< - 串行公/公适配器+串口到迷你串行电缆 - > ARM板迷你串口

看到设置的图像:

使用的设备树: am335x-sbc-t335.dts

设备树资源: http ://get-album.com/dts/

从设备连接到PC

能量功率计< - 2线rx/tx - > SENA RS485适配器< - > PC

注意:主板上的迷你串口与用于串口控制台通信的端口相同(在波特115200上) - 这没有问题

下面是使用libmodbus库从连接的从设备读取第一个寄存器的ac代码

libmodbus_test.c - 从设备读取和打印第一个reigster:

#include <sys/types.h>
#include <string.h>
#include <modbus.h> …
Run Code Online (Sandbox Code Playgroud)

c arm modbus rs485 uart

10
推荐指数
1
解决办法
1068
查看次数

Qemu 裸机仿真 - 如何查看 UART 输出?

问题:

如何从使用 Qemu 运行的裸机程序获取 UART 输出?

背景

这是我一直在使用的命令行调用:

qemu-system-arm -M xilinx-zynq-a9 -cpu cortex-a9 -nographic -kernel $BUILD_DIR/mm.elf -m 512M -s -S
Run Code Online (Sandbox Code Playgroud)
  • 使用机器xilinx-zynq-a9
  • 处理器cortex-a9
  • 由于这是裸机,因此可执行文件是一个自包含的 ELF 文件
  • -m 512M表示平台有 512 MiB RAM
  • -s是一个快捷方式-gdb tcp::1234
  • -S意味着启动时冻结CPU

我使用的ELF文件(mm.elf)执行一个简单的矩阵乘法运算,然后打印它是成功还是失败,以及运行了多长时间。ELF 是使用 Xilinx ARM 工具链编译的。我用它来进行软件故障注入。目前我使用 GDB 来询问应该打印的变量的值。然而,由于在故障注入的情况下打印可能会出现很多问题,因此最好看看通过 UART 实际发送的内容。

相关回答:

将 QEMU 窗口输出重定向到运行 qemu 的终端

这有一些我尝试过的建议,但它不适用,因为问题是关于在主机终端窗口中获​​取 Linux 启动消息。

如何在没有操作系统的情况下运行程序?

这是一个不太相关的问题,因为它仍然假设用户拥有某种引导加载程序。虽然从技术上讲必须有一个引导加载程序才能运行应用程序,但 Xilinx 在boot.S等文件中提供了此系统代码,然后将其编译到 ELF 文件中,作为之前运行的代码main

我尝试过的事情:

我尝试将这些添加到当前 Qemu 命令的末尾。结果遵循尝试的参数。

  • -serial mon:stdio
    • 没有什么
  • -serial null …

arm qemu reliability bare-metal uart

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

通过UART进行iPad配件通信

我们为iPad/iPhone制造了一个新配件,它应该将命令传输到iPad.我们喜欢使用UART(通过某种名为Lingo的 Apple协议).我的研究表明,我只能使用USB(30PIN连接器)和自定义协议.

题:

  • 有没有办法使用UART从APP端连接到iPad配件?
  • 如果协议是在UART中实现的,我们应该能够将其移动到USB,如果我的应用程序无法通过USB使用它.

我的主要猜测是UART命令和访问是iPhone OS保留的协议,不适用于Apps.某些UART命令还包括卷和音频重新路由等设置,所以我猜这是安全的.

usb i2c accessory uart ipad

8
推荐指数
1
解决办法
1864
查看次数

Raspberry Pi UART系列无法正常工作

我试图通过串行连接(GPIO UART引脚)在Raspberry Pi(B型号,raspian wheezy)和STM32F4板之间发送/接收数据.

要设置串口,我按照以下几个教程中的所有步骤进行操作:http://elinux.org/RPi_Serial_Connection#Preventing_Linux_using_the_serial_port

当无法获取到STM32F4板的连接,我读了你可以在本地测试的PI串口,如果你只需连接TX,RX引脚关PI海誓山盟,它应该只是重复Minicom中输入的数据.

遗憾的是,这也不起作用.

文件'cmdline'和'inittab'中ttyAMA0的设置正常.(如许多教程中所述)

并且还尝试了https://github.com/lurch/rpi-serial-console的自动配置程序

直接将RX连接到rpi上的TX引脚不会在minicom中提供任何输出.我还尝试了一个重复给定输入的python脚本.似乎什么都没有用,我有点迷失在这里.

Minicom启动命令应该是正确的(尝试使用不同的波特率):

root@raspberrypi:/home/jef# minicom -b 9600 -o -D /dev/ttyAMA0

OPTIONS: I18n
Compiled on Apr 28 2012, 19:24:31.
Port /dev/ttyAMA0
Run Code Online (Sandbox Code Playgroud)

在minicom的底部,它总是显示离线状态:

CTRL-A Z for help |  9600 8N1 | NOR | Minicom 2.6.1  | VT102 |      Offline
Run Code Online (Sandbox Code Playgroud)

当使用python nothinig检查可用的串口时,会抛出:

python -m serial.tools.list_ports
no ports found
Run Code Online (Sandbox Code Playgroud)

用户在dailout组中,因此不应该是问题(以root和non root身份尝试):

root@raspberrypi:/home/jef# id
uid=0(root) gid=0(root) groups=0(root),20(dialout),1001(indiecity)
Run Code Online (Sandbox Code Playgroud)

验证getty不再使用串口:

root@raspberrypi:/home/jef# ps aux | grep getty
root      2809  0.0  0.1   3740   804 tty1     Ss+  10:36 …
Run Code Online (Sandbox Code Playgroud)

serial-port uart raspberry-pi

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