0
나는 arduino에서 시리얼을 읽고 싶다.C 언어를 사용하여 리눅스에서 arduino 시리얼을 읽기
int x;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("DO YOU HEAR ME ??");
delay(1000);
}
이 combinatin의 출력 즉 :
이#include <stdio.h> /* Standard input/output definitions */
#include <string.h> /* String function definitions */
#include <unistd.h> /* UNIX standard function definitions */
#include <fcntl.h> /* File control definitions */
#include <errno.h> /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */
#include <sys/ioctl.h>
int main(){
char data[1024];
char dev[] = "/dev/ttyACM1";
int fd = open(dev, O_RDWR | O_NOCTTY | O_NDELAY);
fcntl(fd, F_SETFL, FNDELAY);
struct termios options;
tcgetattr(fd, &options);
cfsetispeed(&options, B9600);
cfsetospeed(&options, B9600);
options.c_cflag |= CS8;
options.c_cflag |= CS8;
options.c_cflag &= ~CRTSCTS;
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
tcsetattr(fd, TCSANOW, &options);
ioctl(fd, TCFLSH, 2);
while(1){
read(fd, data, sizeof(data));
printf(data);
}
//write(fd, data, sizeof(data));
}
내 아두 이노는 매우 간단한 스케치를 실행 :이 코드를 사용
??OU HEAR ME ??
DO YOU HEAR ME ??
DO YOU HEAR ME ??
A¹þ
??OU HEAR ME ??
DO YOU HEAR ME ??
DO YOU HEAR ME ??
A¹þ
??OU HEAR ME ??
DO YOU HEAR ME ??
DO YOU HEAR ME ??
내 질문의 질서를 만드는 방법입니다 혼돈. 이 문제는 버퍼가 끝나고 새 버퍼가 시작될 때 발생합니다 (더 큰 버퍼보다 덜 정크 데이터). 그러나 무한 버퍼를 가질 수 없습니다. 또한 처음 읽을 때 많은 쓰레기가 있습니다 .. 동기화 할 방법이 있습니까?
은 (또한 내가 어떤 실수하지 네이티브 영어 죄송합니다.)
이 read''의 반환 값을 확인하십시오 : http://tldp.org/HOWTO/Serial-Programming-HOWTO/가 (예제 코드를 형성 ..) 여기
그리고 새로운 가난한 아두 이노 코드입니다. –
@DavidCullen 나는 cannonical 입력을 가능하게하고 이제는 라인의 시작 부분에서만 정크가 발생한다. 그래서 나는 그것이 입력에 약간의 비트가 있다고 가정하고있다. 그러나 어디에서 (3 자 , 3bytes). – Kozlowsqi
한 쪽 메모는 전송 속도를 높이고 문제가 해결되는지 확인 하시겠습니까? – LethalProgrammer