Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.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/6/cplusplus/164.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
Python—为什么不发送incomingState值?_Python_C++_C_Arduino - Fatal编程技术网

Python—为什么不发送incomingState值?

Python—为什么不发送incomingState值?,python,c++,c,arduino,Python,C++,C,Arduino,当我执行python脚本时,它连接并且不显示任何文本,另一方面,服务器总是只执行以下语句:if(incomingState!=state){} 如何确保python发送inttypeincomingState=0或1时有无\n或\r\n?因为C代码尚未正确接收 有什么想法吗 python_toserver.py: import serial import time #ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=0) ser = serial

当我执行python脚本时,它连接并且不显示任何文本,另一方面,服务器总是只执行以下语句:
if(incomingState!=state){}

如何确保python发送
int
type
incomingState
=
0
1
时有无
\n
\r\n
?因为C代码尚未正确接收

有什么想法吗

python_toserver.py:

import serial
import time
#ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=0)
ser = serial.Serial('/dev/ttyACM0' , 9600, timeout=0)
#ser.open()
ser.write('1')

while True:
  data = ser.read(1024)
  if len(data) > 0:
    print 'Got:', data.encode("hex")    
  time.sleep(0.5)
ser.close()
服务器\u c.c:

#define LED1 2

int state = LOW;
char incomingByte = 0;

void setup() {
  Serial.begin(9600);
  pinMode(LED1, OUTPUT);
}

void loop() {

  if (Serial.available() > 0) {

    int incomingState = (Serial.read() == '1');
    Serial.print("I received: ");
    Serial.println(incomingState, DEC);

    if(incomingState != state) { 
      state = incomingState;
      digitalWrite(LED1, HIGH); 
      Serial.print("Setting LED as: ");
      Serial.println(state);
    } else {
      Serial.print("Doing nothing. LED already: ");
      Serial.println(state);
    }

  }

}
编辑:已尝试:

py:

c:

然后我得到答复:

Got:  connected
Got:  I received: 0
Doing nothing. LED already: 0

Got:  I received: 0
Doing nothing. LED already: 0

Got:  I received: 0
Doing nothing. LED already: 0

Got:  I received: 0
Doing nothing. LED already: 0

Got:  I received: 0
Doing nothing. LED already: 0

Got:  I received: 0
Doing nothing. LED already: 0

Got:  I received: 0
Doing nothing. LED already: 0

这里,您已将数据传递到串行端口,一个值为1的单字节:

ser.write('\x01')
但在服务器代码中,您将该字节(作为
字符
接收)与ascii字符常量
'1'
进行比较,后者描述了一个值为49的字节:


您是否尝试过发送
\x01
?是的-我发送了
\x01
,但如果(incomingState!=state){}仅在Python中,则C代码仍在处理
,我看不到输出,请查看我上面的编辑我不太懂
C++
,但也许您应该尝试接收,而不检查您收到的内容。也就是说,C++代码(Car)InCuffyStase=串行。Read()/Cube >或者……顺便说一下,您在C++代码中做了很多事情,这些代码都是过时的C-ISM。C++有一个真正的<代码>布尔O/COD>类型,并且可以用<代码> const <代码>标识符来定义常数,而不是滥用预处理器.WOW -优。是的,现在1工作了。但有一个问题是Python永远在运行,即使循环C已经发送了DONE命令,请查看最后一次更新代码:-这是我的最后一次更新,如果代码中有任何风险,请告诉我。除此之外,一切正常,谢谢。当您收到命令时,Python代码将关闭串行连接,但这不会中断
为True:
循环。
Got:  connected
Got:  I received: 0
Doing nothing. LED already: 0

Got:  I received: 0
Doing nothing. LED already: 0

Got:  I received: 0
Doing nothing. LED already: 0

Got:  I received: 0
Doing nothing. LED already: 0

Got:  I received: 0
Doing nothing. LED already: 0

Got:  I received: 0
Doing nothing. LED already: 0

Got:  I received: 0
Doing nothing. LED already: 0
ser.write('\x01')
int incomingState = (Serial.read() == '1');