Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c+中读取串行数据+; 我是编程新手,我必须在C++中在一个预先存在的程序(项目中)写一个插件。我不会告诉你细节,但我必须与Arduino(USB连接,串行通信)通信,发送和读取数据。我已经知道如何写入Arduino设备,但我不知道如何从Arduino读取数据_C++_Arduino_Serial Port - Fatal编程技术网

在c+中读取串行数据+; 我是编程新手,我必须在C++中在一个预先存在的程序(项目中)写一个插件。我不会告诉你细节,但我必须与Arduino(USB连接,串行通信)通信,发送和读取数据。我已经知道如何写入Arduino设备,但我不知道如何从Arduino读取数据

在c+中读取串行数据+; 我是编程新手,我必须在C++中在一个预先存在的程序(项目中)写一个插件。我不会告诉你细节,但我必须与Arduino(USB连接,串行通信)通信,发送和读取数据。我已经知道如何写入Arduino设备,但我不知道如何从Arduino读取数据,c++,arduino,serial-port,C++,Arduino,Serial Port,要向arduino发送数据,我只需使用: string device ("/dev/ttyACM0 "); string cmd ("Threshold reached"); system ( (device + cmd).c_str () ); 我非常希望阅读和写作一样简单:D 谢谢你的回答 编辑:该程序在lUbuntu和(2台不同的计算机)Ubuntu 14.10上运行 重新编辑: 我发现一个c语言的程序运行得很好,我编译它并调用二进制代码,多亏了“system”,它也可以运行。以下是解释

要向arduino发送数据,我只需使用:

string device ("/dev/ttyACM0 ");
string cmd ("Threshold reached");
system ( (device + cmd).c_str () );
我非常希望阅读和写作一样简单:D

谢谢你的回答

编辑:该程序在lUbuntu和(2台不同的计算机)Ubuntu 14.10上运行 重新编辑:

我发现一个c语言的程序运行得很好,我编译它并调用二进制代码,多亏了“system”,它也可以运行。以下是解释的链接:

我现在知道如何读写了,只剩下一个问题:识别我感兴趣的数据。 到目前为止,我得到了:字符串读数=系统(./arduino serial-b9600-p/dev/ttyACM0-r);(这准确吗?我能把它放在变量中吗?)

如果(读数==“dR:”){int requestedDensity=/这是我的问题/;} 在我的计算机的缓冲区中,我将接收所有类型的数据,如“询问温度9:25/湿度74/dR:80/门1打开”,我想在“dR:”之后开始读取,在“/”之前停止。 我的条件行吗?程序会在dR:之后立即开始读取吗


然后,如果这是真的,如果我把它转换成int requestedDensity=std::stoi(readings),一旦读到不可转换的内容,它会停止阅读吗?它是否会在“/”处停止而没有任何错误?(不幸的是,我的项目没有时间了,所以我真的无法尝试我找到的每一个答案……

经过研究和思考,我决定不在我的程序中使用序列读数,而只是将数据发送到Arduino并让它处理。因此,无需进一步解释,以下是我的(简单)代码:

//信息通信系统avec l'arduino
字符缓冲区[50]//查恩·斯托克缓冲区
int n;
n=sprintf(缓冲区,“%d”,密度等级);//这是卡拉克的名字

难道我不相信你的write命令有效吗。我想它缺少了一个
,我试过了,但还是成功了(我的Arduino的Rx指示灯闪烁,编译没有错误,…)。知道如何读取数据吗?@Bernard LED闪烁,因为它发送了一条错误消息,可能是“/dev/ttyACM0:Permission denied”,因为您试图执行它,但它没有执行权限(我希望)。«我希望»为什么?我更改了权限,在tty上添加了用户名并拨出,我不确定这是不是你说的?我会尽快检查arduino上收到的消息的性质。。。我是在我认为值得信任的人的建议下做这些事情的。(不是我自己)@Bernard因为执行终端是荒谬的,所以你不应该有执行终端的权限。但这正是你的代码要做的。(阅读
系统的文档,他们说它“执行指定的命令”。您指定了什么命令?)
//communication des infos avec l'arduino

char buffer [50];               //chaîne stockée dans buffer
int n;
n = sprintf (buffer, "%d", densityLevel);       // n est le nombre de carac
std::cout << "Density level : "<< buffer<<endl;

string lvl = buffer;
string cmd = "c_dL:" + lvl;                      //concaténation
system((string ("./arduino-serial -b 9600 -p /dev/ttyACM0 -s "+ cmd)).c_str());//envoi de l'info par arduino-serial (qui doit être dans le dossier du bin useTracker)