Tag: uart

如何在C + python + UART中正确表示单词?

在串行通信中,我需要将来自python的密文发送到UART,它能够使用C读取它。 首先,在python方面使用这种技术: ciphertext=(b’\x24\x70\xb4\xc5\x5a\xd8\xcd\xb7\x80\x6a\x7b\x00\x30\x69\xc4\xe0\xd8′) ser.write(ciphertext) 在C端,我将收到的密文放在缓冲区中。 我测试如果第一个字节24,数据包的开始: if (buffer_RX[0]==’\x24′) { for (i=1;i<=17;i++) //sizeof(buffer_RX)==17 { printf("%x \n",buffer_RX[i]); } } else { printf("It is not a packet!"); } 我的结果是: 70 b4 c5 5a d8 cd b7 80 6a 7b 0 30 69 c4 e0 d8 所以我有两个问题, – 拳头是为什么\x00以这种方式显示,我的意思是只有一个零0? – 第二个是我怎么能有相同的表示: const unsigned int ciphertext[4] = {0x70b4c55a, 0xd8cdb780, 0x6a7b0030,0x69c4e0d8}; […]

UART寄存器未调试到终端

这是两个atmega328p控制器之间的UART传输。 我试图通过从接收控制器上的数据结构中打印变量来确认数据是否正确传递。 我的终端没有显示任何信息。 我只能确认从我的LED调用到达代码,我启用了portB。 我很确定我的BAUD率是正确的(51为8mhz)。 同时确信硬件正确连接。 有关如何进一步调试以找到问题的任何建议? 我是AVR开发的新手,所以也许对其他人来说很明显。 传递 #include #include typedef struct { uint8_t data; uint8_t timestamp; } tData; //Waits until bits are set to grab data char readChar() { while (! (UCSR0A & (1 << RXC0)) ); return UDR0; } //Waits until buffer is empty void writeChar(char data) { while(!(UCSR0A & (1<<UDRE0))); UDR0 […]

环回模式启用?

我希望使用omap4的uart4实例的应用程序代码来测试软件循环。我正在使用默认驱动程序。 我将如何使用ioctl?或任何其他方式。 请在此处找到驱动程序代码omap-serial.c 。 请分享任何参考代码。

收到一个字符串

如何在uart中接收字符串。 我正在使用avr studio 5和brays终端这样的 和这张图片一样,我使用9600的波特率。我尝试输入”abcdef” ,它只出现”abcf” 。 我的代码是这样的—> #include void serial_init(void) { UBRRH = 0x00; UBRRL = 95; //baudrate 9600 and F_CPU 14745600UL UCSRB = (1 << RXEN) | (1 << TXEN) | (1<<RXCIE); UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0)|(1 << UCSZ1); } unsigned long long Usart_Receive(void) { while((UCSRA & (1 << RXC)) == 0) {}; return UDR; […]

当硬币插入时,ccTalk硬币接收器没有反应

我编写了应该处理硬币插入的Linux应用程序(让我们说现在我需要在应用程序中识别插入了什么硬币)。 我使用SCA1 Coin Acceptor(ICT)。 我需要使用波兰硬币(货币 – 波兰兹罗提)。 我能够让PC和Coin Acceptor之间的通信工作,但我有一些问题。 我的设置的简要说明: PC通过cc232协议通过RS232(+ USB转换器)连接到Coin Acceptor。 开关座1:全部关闭,但对于第10个开关,设置为ON(根据文档) 开关座2:全部关闭 我设置禁止状态以允许所有(来自手动文档) 我设置主禁止状态以启用设备(来自手动文档) 我能够从Coin Acceptor获取有关序列号,软件修订等的数据。简单的民意调查也可以。 唯一的问题是关于插入硬币的实际信息。 我发送“读缓冲信用或错误代码”(Header 229)命令 – 根据文档 – 每500ms左右,每次我得到结果0(字节等于0x00),结果都正确返回,它只是看起来就像我没有插入任何硬币一样。 我试图使用抛光硬币以及10美分硬币。 所有硬币都被“拒绝”,被拒绝我的意思是Coin Acceptor似乎不会处理这些硬币(只是返回它们),另一方面,当我发送命令以获得被拒绝的硬币数量时,我再次获得0。 所以现在问你,你知道任何其他设置,以使其工作(最好用波兰硬币)? 此外,默认情况下(假设硬币接收器未连接到PC,但是已通电)硬币接受器应如何对插入的硬币做出反应? 只是返回它们(就像在我的情况下)或“处理”它们然后返回它们或将它们放入“银行”? 我想我发布代码没有意义。 我创建了两个不同的应用程序,问题是一样的。 一个在python中,我采用了https://github.com/Baldanos/ccTools的冒险,第二个应用程序是用C编写的,类似于: https : //github.com/BitCoding/cctalk 。 设备坏了是值得怀疑的,因为我试图使用其他设备没有区别。 此外,这些设备是全新的。 任何建议都会有所帮助。 先感谢您。

与多任务下的UART FIFO相关的错误

附加程序:这些代码由我根据TI uart.c驱动程序库编写。 while(1){ //check if message on Queue -> read or check UART input if(uxQueueMessagesWaiting( UART_TASKQ ) != 0){ //may have bugs // deQueue xQueueReceive( UART_TASKQ, &UARTTaskHandle, 0x0A ); //do the task’s mission using the data in the stucture(put by control task) //Print out the input data. //**********debugging data /* testPointer = UARTTaskHandle->dataBuffer; testAmount = […]

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

我正在使用arm微处理器进行编程,并尝试通过UART使用print语句进行调试。 我不想仅为调试添加stdlibs 。 有没有办法在没有stdio.h / iostream.h情况下打印到控制台? 我可以自己编写printf()吗? 或者,我可以使用DMA控制器直接写入UART。 但是,我想避免这是可能的。 使用内置测试function“echo”或“remote loop-back”我知道我已正确配置UART。

英特尔Galileo裸机UART

我想在Intel Galileo板上编写一个“hello world” 裸机应用程序。 当然,使用UEFI打印文本(到UART-1)效果很好,但我想“手动”访问UART,而无需UEFI的任何帮助。 在QEMU,我的代码效果很好: .h文件 #define COM1_PORT (0x03F8) #define UART_PORT (COM1_PORT) enum uart_port_offs_t { // DLAB RW THR = 0, // 0 W Transmitter Holding Buffer RBR = 0, // 0 R Receiver Buffer DLL = 0, // 1 RW Divisor Latch Low Byte IER = 1, // 0 RW Interrupt Enable Register […]

为UART启用和测试本地环回

我正在尝试进行UART内部回路测试并提出以下更改 #include #include #include #include #include #include #include #include #include #define CCSR_BASE 0xfe000000 #define UART1_BASE 0x11c000 #define UART1_LEN 0x1000 static volatile unsigned long *uartReg = MAP_FAILED; /* Map in registers. */ static unsigned long *initMapMem(int fd, unsigned long addr, unsigned long len) { return (unsigned long *) mmap(0, len, PROT_READ|PROT_WRITE|PROT_EXEC,MAP_SHARED|MAP_LOCKED, fd, addr); } int uartInitialise(void) […]

UART ISR Tx Rx架构

我让事情复杂化了吗? 我正在设计我的代码,通过UART从8051微型到外围设备进行通信。 外设响应来自主机的命令,并且一次只能响应一个命令。 这是一个简单的发送和接收协议。 (tx1,rx1,tx2,rx2,tx3,rx3)每个TX消息以CR终止,每个响应以>终止。 在收到对最后一个的回复之前,我无法发送新消息。 如果我启用该选项,响应也可以在回显打印原始TX消息(但这会导致更多流量) 一个示例消息是: 德克萨斯:你好 RX:世界!> 或者使用echo选项…… 德克萨斯:你好 RX:你好\ rWorld!> 选项A getHello等函数由发送和接收组成。 并行ISR例程将收集传入的字节,并在收到“>”字符时抛出一个标志。 char* getHello(char * buf){ sendMsg(“Hello\r”); delay(10ms); //wait a little bit //wait for receive to come in or timeout to occur while(!receiveFlag || !timeoutFlag); //thrown by ISR receiveMsg(buf); //parse the message and do some other stuff return buf; } […]