回答編集履歴

2

記述修正

2018/11/05 01:49

投稿

YOshim
YOshim

スコア1085

test CHANGED
@@ -166,4 +166,4 @@
166
166
 
167
167
 
168
168
 
169
- 主な変更点は`fputc`を`fwrite`に変えたくらいですが。
169
+ 主な変更点は`fputc`を`fwrite`に変えたくらいですが、これはLivengaさんが最初におっしゃったことでしたね

1

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

2018/11/05 01:49

投稿

YOshim
YOshim

スコア1085

test CHANGED
@@ -83,3 +83,87 @@
83
83
 
84
84
 
85
85
  正常な音声が出力されていない以上、より良い方法を模索しようと思います。
86
+
87
+
88
+
89
+
90
+
91
+ ##追記:
92
+
93
+ 下記のコードで音飛びなく動作するようになりました。
94
+
95
+ ```
96
+
97
+ #include <sys/types.h>
98
+
99
+ #include <sys/stat.h>
100
+
101
+ #include <sys/ioctl.h>
102
+
103
+ #include <fcntl.h>
104
+
105
+ #include <termios.h>
106
+
107
+ #include <unistd.h>
108
+
109
+ #include <stdlib.h>
110
+
111
+ #include <stdio.h>
112
+
113
+ #include <sys/wait.h>
114
+
115
+ #define SERIAL_PORT "/dev/ttyUSB0"
116
+
117
+ #define BAUDRATE B115200
118
+
119
+
120
+
121
+ #define BUFSIZE 100
122
+
123
+
124
+
125
+ int main(int argc, char* argv[]){
126
+
127
+ unsigned char buf[BUFSIZE];
128
+
129
+ int fd;
130
+
131
+ struct termios oldtio, newtio;
132
+
133
+ FILE *fp;
134
+
135
+ fd = open(SERIAL_PORT, O_RDWR);
136
+
137
+ ioctl(fd, TCGETS, &oldtio);
138
+
139
+ newtio = oldtio;
140
+
141
+ newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
142
+
143
+ ioctl(fd, TCSETS, &newtio);
144
+
145
+ while(1){
146
+
147
+ int len = read(fd, buf,BUFSIZE);
148
+
149
+ if(len > 0){
150
+
151
+ fwrite(buf,BUFSIZE,1,stdout);
152
+
153
+ }
154
+
155
+ }
156
+
157
+ ioctl(fd, TCSETS, &oldtio);
158
+
159
+ fclose(fp);
160
+
161
+ close(fd);
162
+
163
+ }
164
+
165
+ ```
166
+
167
+
168
+
169
+ 主な変更点は`fputc`を`fwrite`に変えたくらいですが。