質問するログイン新規登録

回答編集履歴

2

記述修正

2018/11/05 01:49

投稿

YOshim
YOshim

スコア1094

answer CHANGED
@@ -82,4 +82,4 @@
82
82
  }
83
83
  ```
84
84
 
85
- 主な変更点は`fputc`を`fwrite`に変えたくらいですが。
85
+ 主な変更点は`fputc`を`fwrite`に変えたくらいですが、これはLivengaさんが最初におっしゃったことでしたね

1

正常に動作するソースコードを追記

2018/11/05 01:49

投稿

YOshim
YOshim

スコア1094

answer CHANGED
@@ -40,4 +40,46 @@
40
40
  まだ正常な音声が出力されてはいませんが、
41
41
  その原因はLinux、PCではなくマイコン側のソースコードの問題と考えています。
42
42
 
43
- 正常な音声が出力されていない以上、より良い方法を模索しようと思います。
43
+ 正常な音声が出力されていない以上、より良い方法を模索しようと思います。
44
+
45
+
46
+ ##追記:
47
+ 下記のコードで音飛びなく動作するようになりました。
48
+ ```
49
+ #include <sys/types.h>
50
+ #include <sys/stat.h>
51
+ #include <sys/ioctl.h>
52
+ #include <fcntl.h>
53
+ #include <termios.h>
54
+ #include <unistd.h>
55
+ #include <stdlib.h>
56
+ #include <stdio.h>
57
+ #include <sys/wait.h>
58
+ #define SERIAL_PORT "/dev/ttyUSB0"
59
+ #define BAUDRATE B115200
60
+
61
+ #define BUFSIZE 100
62
+
63
+ int main(int argc, char* argv[]){
64
+ unsigned char buf[BUFSIZE];
65
+ int fd;
66
+ struct termios oldtio, newtio;
67
+ FILE *fp;
68
+ fd = open(SERIAL_PORT, O_RDWR);
69
+ ioctl(fd, TCGETS, &oldtio);
70
+ newtio = oldtio;
71
+ newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
72
+ ioctl(fd, TCSETS, &newtio);
73
+ while(1){
74
+ int len = read(fd, buf,BUFSIZE);
75
+ if(len > 0){
76
+ fwrite(buf,BUFSIZE,1,stdout);
77
+ }
78
+ }
79
+ ioctl(fd, TCSETS, &oldtio);
80
+ fclose(fp);
81
+ close(fd);
82
+ }
83
+ ```
84
+
85
+ 主な変更点は`fputc`を`fwrite`に変えたくらいですが。