/* setup and enable serial interrupts */ void serial_init() { serial_stop(); /* rx pin setup */ cbi(DDRD, 0); /* set pin input */ cbi(PORTD,0); /* enable input pin pull-up */ /* USART init code */ UCSRB = 0x18; /* RX and TX enable, interrupts */ UCSRC = 0x8E; /* no parity, 1 stop, 8bit */ UBRRH = 0x00; /* high byte, serial divisor */ /*UBRRL = 0x67; /* low byte, serial divisor. 9600 baud */ UBRRL = 0x63; /* low byte, serial divisor. 10000 baud */ /* buffer init */ tx_head = 0; tx_size = 0; rx_head = 0; rx_size = 0; /* set the USART_RXC interrupt enable bit */ sbi(UCSRB, 7); }
int main(int argc, char *argv[]) { struct serialsosurce ss; serial_start(&ss); #define OPEN 1 #define CLOSE 0 while (1) { // controller_set(&ss, 120, CLOSE); // int status; // controller_get(&ss, 120, &status); // printf("controller %d status is %d\n", 120, status); // sleep(3); // controller_set(&ss, 120, CLOSE); // sleep(3); // sensor_set(&ss, 20, 100); // int status; // sensor_get(&ss, 20, &status); // printf("sensor %d status is %d\n", 20, status); // // sleep(3); struct sensorX sx; int id[] = {1, 10, 20, 40}; int data[] = {10, 20, 30, 40}; sensorX_init(&sx, sizeof(id)/sizeof(int), id, data); sensorX_set(&ss, &sx); struct sensorX sx_test; int id2[] = {1, 10, 20, 40}; sensorX_init(&sx_test, sizeof(id2)/sizeof(int), id2, NULL); sensorX_get(&ss, &sx_test); printf("Sensor Data:\n"); printf("=========================\n"); int i; for (i = 0; i < sx_test.n; i++) { printf("sensor id[%d] = %d\n", sx_test.id[i], sx_test.data[i]); } printf("=========================\n"); sleep(3); } while (1) getchar(); serial_stop(&ss); return 0; }
int main(int argc, char * argv[]) { if (argc < 2) { fprintf(stderr, "Usage: %s device\n", argv[0]); exit(1); } int fd = serial_init(argv[1]); if (fd == -1) { exit(1); } unsigned int data[8]; for (;;) { if (serial_get_data(fd, data)) { printf("%5u %5u %5u %5u %5u %5u %5u %5u\n", data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]); } } serial_stop(fd); return 0; }