uint32_t serial_getInt(uint8_t base){ char str[33]; // Lowest base taken is 2, and we're dealing with 32 bit integers. char* ptr=str; uint32_t ret=0; if(base>36) return 0; if(!serial_initialized) serial_init(); //safety serial_gets(str, 33, '\r'); while(*ptr){ *ptr = toUpcase(*ptr); if((*ptr > 47 && *ptr < 58) || (*ptr > 64 && *ptr < 91)) ret=toDec(*ptr, base)+ret*base; ptr++; } return ret; }
ssize_t serialchar_read(struct file *file, char *buf, size_t count, off_t offset) { (void)offset; size_t retlen; struct serial_info *serial = file->f_private; while (serial->rx_count < count) { set_current_state(TASK_INTERRUPTIBLE); schedule(); } if (count == 1) return serial_getc(serial, buf); if (serial_gets(serial, count, &retlen, buf) < 0) return -1; return retlen; }
int main(){ int lineCounter=1; led_init(); USART2_init(9600); lcd_init(); serial_puts(USART2_Serial,"\nSystem ready\n"); serial_puts(LCD_Serial,"\fSystem ready\n"); while(1){ serial_printf(USART2_Serial,"%d$ ",lineCounter); serial_gets(USART2_Serial,mybf,80); serial_printf(USART2_Serial,"%s\n",mybf); if(sscanf(mybf,"%s",wordBuffer) > 0){ serial_printf(USART2_Serial,"word: %s\n",wordBuffer); serial_printf(LCD_Serial,"\fword: %s\n",wordBuffer); serial_printf(USART2_Serial,"characters: %d\n",strlen(wordBuffer)); } lineCounter++; } return 0; }
int main(void) { memset(RX_BUF,0,4); led_init(); nRF24L01_init(); motor_init(); //电机初始化 QuadCopter_init(&QuadCopter); Delayms(10); serial_init(115200); LED_ON; serial_printf("\nhhhhhahhahahha终于可以了 \n "); // Delayms(100); // serial_flush(&tx_ringbuf); serial_putc('o'); serial_gets((char*)rxbuf); while(1) { } }
int main(int argc, char **argv) { char buf[256]; int serial; double rawx, rawy; double velx = 0, vely = 0; double posx = 0, posy = 0; double accx, accy; enum { STATE_IDLE, STATE_MEASURING, } state = STATE_IDLE; if(argc < 2) { fprintf(stderr, "Usage: sensys-lab2 /dev/serial-port\n"); return 1; } if((serial = open_serial(argv[1], BAUDRATE)) < 0) { fprintf(stderr, "Error: could not open serial port\n"); return 1; } serial_puts(serial, "AT+OSX=3\r\n"); serial_puts(serial, "AT+OSR=" STR(SAMPRATE) "\r\n"); //120 Hz sample rate buf[255] = 0; for(;;) { serial_gets(serial, buf, 255); if(sscanf(buf, "DATA AXL: %lf,%lf", &rawx, &rawy) < 2) continue; accx = ((rawx - BIASX)/SCALE)*G; accy = ((rawy - BIASY)/SCALE)*G; switch(state) { case STATE_IDLE: velx = vely = posx = posy = 0; if(accy < STARTTHRESHOLD) { printf("Starting measurement!\n"); state = STATE_MEASURING; } break; case STATE_MEASURING: velx += accx*DT; vely += accy*DT; posx += velx*DT; posy += vely*DT; if(accy > STOPTHRESHOLD) { printf("Ending measurement!\n"); printf("Distance: %lf m\n", -posy); state = STATE_IDLE; } break; } } return 0; }