从arduino接收和发送数据到c#,反之亦然
首先,我昨天早上开始使用C#,所以我对潜在麻木的问题表示歉意. 到目前为止,我编写了以下代码.我可以将数据从C#发送到Arduino,这似乎正常工作.现在,我想通过serial.print同时从Arduino接收数据,并将其显示在框中(ListBox?).如何将其添加到代码中? 我将感谢任何投入,提示和想法. namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); stop.Enabled = false; left.Enabled = false; right.Enabled = false; up.Enabled = false;
16 2024-04-23
编程技术问答社区
如何使用Universal Windows应用程序将序列数据写入COM端口?
通常C#应用程序使用System.IO.Ports喜欢: SerialPort port = new SerialPort("COM1"); port.Open(); port.WriteLine("test");` 但是通用Windows应用程序不支持System.IO.Ports,因此无法使用此方法.有人知道如何通过UWA中的COM端口编写序列数据吗? 解决方案 您可以使用 这些类提供了发现此类串行设备的功能,读写数据以及控制流控制的串行特异性属性,例如设置波特率,信号状态. 通过将以下功能添加到Package.appxmanifest:
12 2024-04-20
编程技术问答社区
arduino和visual studio c++, 2路串行通信
我正在使用Arduino和Visual Studio C ++,并尝试构建双向实时串行通信. 我使用的是Win 10(在VMware Fusion中),32位系统,Visual Studio 2013,Arduino IDE 1.8.0和Arduino Board Uno. 我从 http://playground.arduino.ccc/interfacing/cpppwindowsfacte/A>是两个文件: serialClass.h 和 serial.cpp. )在我的主机中功能. 我想再运行几次,用户可以在控制台中输入输入,而Arduino将相应地生成输出.但是,当我添加时循环时,它无法正常工作. 下面是我的主要cpp :(随着评论行中的循环) int main() { Serial* port = new Serial("COM3"); if (port->IsConnected()) cout
12 2024-04-10
编程技术问答社区
串行通信中需要检查和
我目前正在研究一个项目,该项目涉及从PC(在C#中编码的USB到串行应用程序)到嵌入式平台(STM32F4)的串行com. 我看到在某些情况下,必须在通信框架中进行校验和. 通信配置: baud-rate = 115200, 没有奇偶校验, 一个停车位, 没有握手, 框架长度:16字节 值得在我的应用程序中添加校验和吗?我应该(不)有此校验和的原因是什么? 谢谢您的回答. 解决方案 是的,您必须有一个校验和.唯一可接受的非养生解决方案是基于CRC的适当校验和.最常见的行业标准是" CRC-16-CCITT"(多项式0x1021).这将捕获任何单位错误,大多数双位错误和某些爆发错误. 即使您只在办公环境中使用RS-232(?),任何由cr脚的消费电子产品引起的EMI可能会引起故障和错误的数据.周围有很多这样的糟糕的电子设备:例如,PC中的电子产品的EMC性能不佳并不罕见.特别是,有无数的USB到Serial适配器具有彻头彻尾的质量.
2 2024-04-09
编程技术问答社区
使用Visual Studio 2008和C语言进行串行通信(针对Arduino)。
我想使用Visual Studio和C将数据发送到我的Arduino董事会. 我特别需要使用C,因为我使用ArtoolKit来获取标记并相应地发送数据. 我正在尝试代码 #include #include void main() { system( "MODE COM9: BAUD=9600 PARITY=n DATA=8 STOP=1" ) ; FILE port = fopen( "COM9:", "wb" ) ; printf("hello"); fprintf( port, "s" ) ; fclose( port ) ; } 但没有被编译. 我只需要发送数据. 解决方案 我从您的帖子中了解到,您需要使用Visual Studio发送数据,不要为闪存或任何其他内容编写程序.这是我在我的计算机上为您制作的示例,它可以发出文本测试. #include "stdafx.h"
18 2024-04-09
编程技术问答社区
使用UART发送一个结构
我有两个板: - 主板(M板) - 从板(S板) m董事会应向S董事会发送请求,后者应回答. 从属的答案是一个结构: typedef struct{ uint8_t userID; uint8_t userPass; uint16_t userData; }UserTypeDef; UserTypeDef User; 示例: M板通过发送命令get_user_info来询问用户的信息(struct). S董事会应将数据结构归还为M董事会. m板(TX) - > get_user_info->(rx)S板 S板(TX) - >用户 - >(RX)M板 问题是如何使用UART发送这样的结构? 解决方案 编写一个协议文档,该协议文档明确定义了如何通过网络媒体传输结构的内容.然后编写代码以实现协议. 传输结构/对象的代码为" 如果您使用的是二进制协议,则可以通过定义uint8_t指针指向结构中的第一个字节,然后传输字节直到传
26 2024-04-07
编程技术问答社区
UART ISR Tx Rx结构
我让事情变得复杂吗? 我正在架构我的代码,以从8051微型到UART上的外围设备.外围响应主机的命令,一次只能响应一个命令.这是一个简单的发送和接收协议. (TX1,RX1,TX2,RX2,TX3,RX3)每个TX消息均以CR终止,每个响应均以A>终止.在收到对最后一张答复之前,我无法发送新消息.如果我启用该选项(但这会导致更多的流量),响应也可以在开始时在开始时打印原始的TX消息. 示例消息将是: TX:你好 rx:world!> 或带有回声选项... TX:你好 rx:你好\ rworld!> 选项 诸如Gethello之类的功能将包括发送和接收的功能.当收到">"字符时,平行的ISR例程将收集传入字节并抛出标志. char* getHello(char * buf){ sendMsg("Hello\r"); delay(10ms); //wait a little bit //wait for receive
10 2024-04-07
编程技术问答社区
asio_read_some countinue reading to get all data
我使用boost async_read_some,我想读的数据stxdataetxlrc, 如果不是lrc,我会使用async_read_until,直到获得etxlrc,我才能继续阅读? 感谢所有的帮助. /huvcbo 解决方案 从非常稀疏的信息中,我假设您在串行通讯的背景下对话. 在这种情况下,最简单的入门方法可能是使用ASIO组成的读取操作(例如read,read_until>). comm::read_until(sp, buf, '\x03'); 有了一点句法糖,您可以更富有地写入: enum ControlCodes : uint8_t { STX = 2, ETX = 3, }; 例如: #include #include #include namespace comm = boost::asio;
20 2024-04-02
编程技术问答社区
C#控制台应用程序通过蓝牙与Arduino对话
除此之外,在这里没有什么可说明的,我不知道为什么. Arduino上的串行输出一无所有. C#代码上的输出落后于等待响应,然后什么也没有. 当我启动C#程序时,Arduino上的蓝牙卡LED绿色是绿色的,因此可以建立连接.别无其他. arduino代码 #include //Software Serial Port #define RxD 8 // This is the pin that the Bluetooth (BT_TX) will transmit to the Arduino (RxD) #define TxD 7 // This is the pin that the Bluetooth (BT_RX) will receive from the Arduino (TxD) SoftwareSerial blueToothSerial(RxD,TxD); boolean light = false; void
6 2024-04-01
编程技术问答社区
Arduino 串行中断
我正在研究Arduino Mega 2560项目.在Windows 7 PC上,我正在使用Arduino1.0 IDE.我需要建立一个串行的蓝牙通信,波特率为115200.当RX可用数据时,我需要收到中断.我所看到的每片代码都使用"轮询",它在Arduino的环内放置了串行条件.如何在Arduino的循环中替换此方法以进行中断及其服务程序?似乎AttachInterrupt()并未为此目的提供.我依靠中断从睡眠模式中唤醒arduino. 我已经开发了这个简单的代码,该代码应该打开连接到引脚13的LED. #include #include void setup() { pinMode(13, OUTPUT); //Set pin 13 as output UBRR0H = 0;//(BAUD_PRESCALE >> 8); // Load upp
10 2024-04-01
编程技术问答社区
通过串行端口的数据损坏的不寻常模式
我正在通过从Windows Hyperternal中发送数据来测试应用程序在串行端口上的数据,这主要是有效的.例如,如果我发送: 快速棕色狐狸 我收到: 快速棕色狐狸 但是,如果我发送: uuuuuuuuuuuuu 我收到 uuëuãuãuãuãuãuõuõuõuõuõuõuõuõuõuõuãuõu( 或者如果我发送: aaaaaaaaaaaa 我收到: aaáaáaáaáaá 因此,对于任何超过2的重复字符串的字符串,然后第三,第五,第7等.字符通过设置高钻头而损坏. 两台机器上的串行端口设置都是相同的. 解决方案 我已经找到了:/a> 最后一段说: 保存的配置可以以奇怪的方式破坏.最明显的 症状是连续键入同一字符的原因是 要错误发送的字符的第三个实例.其他 案例,终端程序无法完全工作.我们唯一的解决方案 知道是从头开始创建新的配置,如所述 上面. 听起来很熟悉?
8 2024-03-07
编程技术问答社区
安卓应用与Arduino串行通信不同步
我有一个简单的声纳arduino项目,因此每秒都会打印距离. 我已经使用 data: 7 data: 1 data: data: 71 这是生成输出的代码: private UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() { @Override public void onReceivedData(byte[] arg0) { try { String data = new String(arg0, "UTF-8"); System.out.println("data: " + data); } catch (UnsupportedEncodingException e) {
16 2024-03-03
编程技术问答社区
串行监视器显示来自Arduino Mega的意外输入
我正在使用Arduino Mega控制CS1237 ADC.我正在向时钟引脚发送一个信号,每个时钟脉冲之后,等待1ms,然后根据 datasheet 我找到了(通过这是我的设置和预设代码: // Using pins 2 and 3 on the Arduino, since 0 and 1 are used to talk to the USB port. int ndrdy = 2; int clck = 3; // the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for n
16 2024-03-03
编程技术问答社区
Rs232 arduino问题
我对Arduino Uno有些混乱.我使用serial.print(" hi")代码,然后在序列显示器上显示" hi".我还使用RS232/TTL转换器,该转换器在Arduino上正确连接了引脚1和0. 然后,我意识到,当serial.print(" hi")进行数据时,首先将通过USB电缆进行.但是我希望数据必须通过1和0的TX RX引脚. 但是,当我从串行显示器中输入一些数据时,RS232/TTL将起作用并发送一些数据? 我不明白情况吗? 为什么会发生这种情况?我只想使用RS232/TTL转换器从引脚1和0发送数据. 我怎样才能做到这一点 ?我不使用USB电缆发送数据. 解决方案 如果您在默认情况下查看来自PC的数据,则使用引脚0和1. 如果正确连接了整个对话器,则应该能够读取完全相同的内容,如果没有,则连接是错误的.经典错误是要切换TX和RX,因为必须越过它们. 还记得RS232不支持多个主机,但是如果"其他主机"只是读书,通常不会给任何问题,因为它们只会嗅探连
18 2024-03-03
编程技术问答社区
如何尽量减少arduino的串行通信读取错误
我正在尝试在计算机和Arduino之间稳定串行通信渠道.当我查看Arduinoide时,我收到了来自Arduino的完美消息-3个相同的数字.现在,我正在尝试创建一个C ++应用程序,以在运行Ubuntu的计算机上读取该数据,但是我在字符串上得到了很多垃圾.我一直在阅读和搜索,没有成功.有人可以帮助我找到问题的根源吗? 代码: serialcomm.h: #ifndef SERIALCOMM_HPP #define SERIALCOMM_HPP #include #include #include // standard input / output functions #include // string function definitions #include // UNIX standard function definitions #include
12 2024-03-03
编程技术问答社区
使用c++在PC和arduino之间通过RS232进行串行通信
我试图通过RS232绳索与我的Arduino Duemilanove进行交流.我只是希望能够通过桌面应用程序向我的Arduino发送字节(或字符). Arduino正在我的计算机上插入USB COM5.我将RS232插入com1中,然后在RS232的另一端有第2 3和5,分别连接到Arduino Pins TX,RX和GND. . 我在以下链接上找到了C ++的串行通信类: http://playground.arduino.cc/interfacing/cppwindows 我从上面的示例中添加了.h和.cpp文件为serial.h and serial.cpp(我认为该示例使用serialClass.h和serialClass.cpp,我只是更改了名称). 在我的arduino上,我运行以下代码: // ARDUINO char incomingByte = 0; void setup() { Serial.begin(9600); } v
14 2024-03-03
编程技术问答社区
LUA编程,ESP8266 NODEMCU串行通信
我试图通过ESP8266 12E节点MCU开发套件发送数据到Arduino串行端口. 我很难找到使用的语法示例,我尝试通过arduino使用serial.print()发送数据,但我不确定如何在lua中完成此操作. 任何帮助都将受到赞赏 我可以获取SSID和密码表格Arduino init.lua SSID = "XXXX" Password = "XXXX" wifi.setmode(wifi.STATION) wifi.sta.config(SSID,Password) -- Replace with your AP Name and security key. wifi.sta.connect() tmr.alarm(1, 1000, 1, function() if wifi.sta.getip()== nil then print("Obtaining IP...") else tmr.stop(1) print("Got IP. "..wif
12 2024-03-03
编程技术问答社区
jSSC不能向Arduino发送数据
我在JSSC的写作功能方面有问题.我的Arduino Uno董事会似乎没有从我的Java程序中获取数据. 我有一个由Arduino Uno板控制的步进电机.我制作了一个具有2个按钮的简单程序.一个用于CW旋转,另一种是CCW旋转. CW按钮发送" H"字符,CCW按钮发送" L" char.现在我有: 我从Arduino IDE串行控制台检查了我的Arduino程序正确.当我发送" H"时,电动机转动CW,并使用" L"转动CCW. 我制作了一个程序,并使用两个按钮发送" H"和" L".它起作用. 我使用JSSC制作了JAVA程序,其中有两个按钮发送" H"和" L".它失败了. 当我按下程序中的一个按钮时,我会看到板上的" L"闪烁3-4次,但什么也不会发生. 我尝试使用JSSC从董事会获取数据,但它起作用了.似乎问题在于写作功能. 我与另一个Arduino Uno板进行了检查,但结果是相同的. 我的Java程序使用serialPort.writeByte(
10 2024-03-03
编程技术问答社区
与Arduino通信的QSerial错误
我写了一个简单的程序来使用QT(从源为Visual Studio 2013构建的版本5.5之后,这是一个简单的固件,从串行中读取,10秒后打印" 1"后: void setup() { Serial.begin(9600); //Open Serial connection for debugging } void loop() { if (Serial.available()) { char user_input = Serial.read(); if (user_input == '1') { delay(10000); Serial.print('1'); } } 这是QT程序,当我按开始按钮时,它在串行上发送" 1"并不断聆听以阅读的消息: main.cpp #include "mainwindow.h" #include #pragma comment(lib,
14 2024-03-03
编程技术问答社区