Upload files to "Receiver-Arduino"
parent
71277e159f
commit
4b88257ee1
|
@ -0,0 +1,17 @@
|
||||||
|
void setup() {
|
||||||
|
// put your setup code here, to run once:
|
||||||
|
Serial.begin(9600);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
// put your main code here, to run repeatedly:
|
||||||
|
uint32_t w = 0xCAFE0000;
|
||||||
|
|
||||||
|
w |= random(100);
|
||||||
|
|
||||||
|
Serial.write( (char*) &w, 4);
|
||||||
|
|
||||||
|
delay(1000);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,103 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <linux/ioctl.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <termios.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
|
||||||
|
int openSerialPort(char* portname, int readMin=16){
|
||||||
|
/* Open the file descriptor in non-blocking mode */
|
||||||
|
int fd = open(portname, O_RDWR | O_NOCTTY);
|
||||||
|
if(fd==-1){
|
||||||
|
printf("Error trying to open the file: %s\n", portname);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
/* Set up the control structure */
|
||||||
|
struct termios toptions;
|
||||||
|
/* Get currently set options for the tty */
|
||||||
|
tcgetattr(fd, &toptions);
|
||||||
|
/* ----------- Set custom options ------------*/
|
||||||
|
/* 9600 baud */
|
||||||
|
cfsetispeed(&toptions, B9600);
|
||||||
|
cfsetospeed(&toptions, B9600);
|
||||||
|
/* 8 bits, no parity, no stop bits */
|
||||||
|
toptions.c_cflag &= ~PARENB;
|
||||||
|
toptions.c_cflag &= ~CSTOPB;
|
||||||
|
toptions.c_cflag &= ~CSIZE;
|
||||||
|
toptions.c_cflag |= CS8;
|
||||||
|
/* no hardware flow control */
|
||||||
|
toptions.c_cflag &= ~CRTSCTS;
|
||||||
|
/* enable receiver, ignore status lines */
|
||||||
|
toptions.c_cflag |= CREAD | CLOCAL;
|
||||||
|
/* disable input/output flow control, disable restart chars */
|
||||||
|
toptions.c_iflag &= ~(IXON | IXOFF | IXANY);
|
||||||
|
/* disable canonical input, disable echo, disable visually erase
|
||||||
|
* chars disable terminal-generated signals */
|
||||||
|
toptions.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
|
||||||
|
/* disable output processing */
|
||||||
|
toptions.c_oflag &= ~OPOST;
|
||||||
|
/* wait for readMin characters to come in before read returns */
|
||||||
|
/* WARNING! THIS CAUSES THE read() TO BLOCK UNTIL ALL */
|
||||||
|
/* CHARACTERS HAVE COME IN! */
|
||||||
|
toptions.c_cc[VMIN] = readMin;
|
||||||
|
/* no minimum time to wait before read returns */
|
||||||
|
toptions.c_cc[VTIME] = 0;
|
||||||
|
/* commit the options */
|
||||||
|
tcsetattr(fd, TCSANOW, &toptions);
|
||||||
|
/* Wait for the Arduino to reset */
|
||||||
|
usleep(1000*1000);
|
||||||
|
/* Flush anything already in the serial buffer */
|
||||||
|
tcflush(fd, TCIFLUSH);
|
||||||
|
printf("Ready to receive the words \n");
|
||||||
|
return fd;
|
||||||
|
}
|
||||||
|
|
||||||
|
void usage(){
|
||||||
|
printf("Read in loop a 32 bit word \n");
|
||||||
|
printf("I.e. it assumes that Arduino sends a 32 bit word for each readout\n");
|
||||||
|
printf("Usage: command portName \n");
|
||||||
|
exit(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void* out_stream;
|
||||||
|
|
||||||
|
void term_handler(int signal_num){
|
||||||
|
std::ofstream* out = static_cast<std::ofstream *>(out_stream);
|
||||||
|
//std::ofstream out = *out_point;
|
||||||
|
out -> flush();
|
||||||
|
out -> close();
|
||||||
|
exit(0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]){
|
||||||
|
signal(SIGTERM, term_handler);
|
||||||
|
|
||||||
|
if(argc!=2)
|
||||||
|
usage();
|
||||||
|
|
||||||
|
// Set the port name
|
||||||
|
char* portName = argv[1];
|
||||||
|
|
||||||
|
int fd = openSerialPort(portName);
|
||||||
|
|
||||||
|
std::ofstream out("file.dat", std::ios::binary);
|
||||||
|
|
||||||
|
out_stream = &out;
|
||||||
|
|
||||||
|
for(;;){
|
||||||
|
uint32_t w = 0x0;
|
||||||
|
int n = read(fd, (char*) &w, 4);
|
||||||
|
printf("Got %d bytes, 0X%8x \n", n, w);
|
||||||
|
out.write ((char*) &w, sizeof(w));
|
||||||
|
}
|
||||||
|
|
||||||
|
out.close();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue