回答編集履歴
2
記述修正
test
CHANGED
@@ -166,4 +166,4 @@
|
|
166
166
|
|
167
167
|
|
168
168
|
|
169
|
-
主な変更点は`fputc`を`fwrite`に変えたくらいですが。
|
169
|
+
主な変更点は`fputc`を`fwrite`に変えたくらいですが、これはLivengaさんが最初におっしゃったことでしたね。
|
1
正常に動作するソースコードを追記
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`に変えたくらいですが。
|