Я написал тестовый скетч и питоновский скрипт для обмена данными через последовательный интерфейс. Сейчас протестил на Arduino UNO - все работает.
Скрипт на питоне открывает порт (у меня COM17) и пишет туда один символ. Потом читает из порта символ и выводит его на экран. Ардуина слушает свой порт, если что-то приходит, то она пересылает эти данные обратно. Получается что-то вроде пинга для проверки serial connection. Скрипт выводит в порт символы от 'a' до 'z' и потом завершается.
Скетч для ардуины:
Код: Выделить всё
//
// Created: 2012-11-19
// Author: Mr. Kubikus
//
int serialData = 0;
int serialRDYtoSend = 0;
void setup(){
// Open serial connection.
Serial.begin(9600);
}
void loop(){
serialRead();
serialWrite();
}
void serialRead(void) {
if (Serial.available()) {
// Read byte
serialData = Serial.read();
serialRDYtoSend = 1;
}
}
void serialWrite(void) {
if (serialRDYtoSend) {
// Write byte + \n
Serial.write(serialData);
Serial.println();
serialRDYtoSend = 0;
}
}
Код: Выделить всё
'''
Created on 2012-11-19
@author: Mr. Kubikus
'''
## import the serial library
import serial
import time
import string
## open the serial port that your arduino
## is connected to.
ser = serial.Serial("COM17", 9600)
time.sleep(2)
for x in range(ord('a'), ord('z')+1):
print '-> ' + str(chr(x))
ser.write(chr(x))
data = ser.readline().strip('\n')
print str(data) + ' <-' + '\n'
## close the port and end the program
ser.close()
- Win7Prof 64bit
- Arduino IDE 1.0.1
- Python 2.7
- PySerial 2.5