Line 10... |
Line 10... |
#include <fcntl.h>
|
#include <fcntl.h>
|
#include <unistd.h>
|
#include <unistd.h>
|
#include <termios.h>
|
#include <termios.h>
|
|
|
|
|
#define SERIAL_PORT "/dev/ttyS0"
|
|
|
|
|
|
static int debug = 0;
|
static int debug = 0;
|
|
|
static FILE *diskFile = NULL;
|
static FILE *diskFile = NULL;
|
static int sfd = 0;
|
static int sfd = 0;
|
static struct termios origOptions;
|
static struct termios origOptions;
|
Line 44... |
Line 41... |
}
|
}
|
exit(1);
|
exit(1);
|
}
|
}
|
|
|
|
|
void serialOpen(void) {
|
void serialOpen(char *serialPort) {
|
sfd = open(SERIAL_PORT, O_RDWR | O_NOCTTY | O_NDELAY);
|
sfd = open(serialPort, O_RDWR | O_NOCTTY | O_NDELAY);
|
if (sfd == -1) {
|
if (sfd == -1) {
|
error("cannot open serial port '%s'", SERIAL_PORT);
|
error("cannot open serial port '%s'", serialPort);
|
}
|
}
|
tcgetattr(sfd, &origOptions);
|
tcgetattr(sfd, &origOptions);
|
currOptions = origOptions;
|
currOptions = origOptions;
|
cfsetispeed(&currOptions, B38400);
|
cfsetispeed(&currOptions, B38400);
|
cfsetospeed(&currOptions, B38400);
|
cfsetospeed(&currOptions, B38400);
|
Line 94... |
Line 91... |
|
|
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
unsigned char b;
|
unsigned char b;
|
int i, j;
|
int i, j;
|
|
|
if (argc != 2) {
|
if (argc != 3) {
|
printf("Usage: %s <data_file>\n", argv[0]);
|
printf("Usage: %s <serial_port> <data_file>\n", argv[0]);
|
exit(1);
|
exit(1);
|
}
|
}
|
diskFile = fopen(argv[1], "wb");
|
serialOpen(argv[1]);
|
|
serialRcv(&b);
|
|
diskFile = fopen(argv[2], "wb");
|
if (diskFile == NULL) {
|
if (diskFile == NULL) {
|
error("cannot open data file %s for write", argv[1]);
|
error("cannot open data file %s for write", argv[2]);
|
}
|
}
|
serialOpen();
|
|
serialRcv(&b);
|
|
for (i = 0; i < 512; i++) {
|
for (i = 0; i < 512; i++) {
|
if (debug) {
|
if (debug) {
|
printf("%03d: ", i);
|
printf("%03d: ", i);
|
}
|
}
|
for (j = 0; j < 16; j++) {
|
for (j = 0; j < 16; j++) {
|
while (!serialRcv(&b)) ;
|
while (!serialRcv(&b)) ;
|
if (fwrite(&b, 1, 1, diskFile) != 1) {
|
if (fwrite(&b, 1, 1, diskFile) != 1) {
|
error("cannot write to data file %s", argv[1]);
|
error("cannot write to data file %s", argv[2]);
|
}
|
}
|
if (debug) {
|
if (debug) {
|
printf("%02X ", b);
|
printf("%02X ", b);
|
}
|
}
|
}
|
}
|