//-------------------------------------------------------------- // Screen als Bitmap (*.bmp) per UART senden // dauert bei 115200 Baud ca. 20 sekunden //-------------------------------------------------------------- void p_oszi_send_screen(void) { uint32_t n,adr; uint16_t x,y,color; uint8_t r,g,b; // BMP-Header senden for(n=0;n<BMP_HEADER_LEN;n++) { UB_Uart_SendByte(COM1,BMP_HEADER[n]); } // den richigen Buffer zum senden raussuchen if(LCD_CurrentLayer==1) { adr=LCD_FRAME_BUFFER; } else { adr=LCD_FRAME_BUFFER + LCD_FRAME_OFFSET; } // alle Farb-Daten senden for(x=0;x<LCD_MAXX;x++) { for(y=0;y<LCD_MAXY;y++) { n=y*(LCD_MAXX*2)+(x*2); color=*(volatile uint16_t*)(adr+n); r=((color&0xF800)>>8); // 5bit rot g=((color&0x07E0)>>3); // 6bit gruen b=((color&0x001F)<<3); // 5bit blau UB_Uart_SendByte(COM1,b); UB_Uart_SendByte(COM1,g); UB_Uart_SendByte(COM1,r); } } }
//-------------------------------------------------------------- // ein Daten Array per UART senden // cnt = Anzahl der Daten die gesendet werden sollen //-------------------------------------------------------------- void UB_Uart_SendArray(UART_NAME_t uart, uint8_t *data, uint16_t cnt) { uint32_t n; if(cnt==0) return; // sende alle Daten for(n=0;n<cnt;n++) { UB_Uart_SendByte(uart,data[n]); } }
//-------------------------------------------------------------- // einen String per UART senden // // Endekennung vom String muss 0x00 sein !! // // end_cmd : NONE, LFCR, CRLF, LF, CR //-------------------------------------------------------------- void UB_Uart_SendString(UART_NAME_t uart, char *ptr, UART_LASTBYTE_t end_cmd) { uint16_t length = 0; // laenge ermitteln while (ptr[length] != '\0') { length++; } // sende kompletten String if (uart == COM1) { HAL_UART_Transmit(&UartHandle1, (uint8_t *)(ptr), length, UART_TX_TIMEOUT); } if (uart == COM6) { HAL_UART_Transmit(&UartHandle6, (uint8_t *)(ptr), length, UART_TX_TIMEOUT); } if (uart == COM7) { HAL_UART_Transmit(&UartHandle7, (uint8_t *)(ptr), length, UART_TX_TIMEOUT); } // eventuell Endekennung senden if (end_cmd == LFCR) { UB_Uart_SendByte(uart, 0x0A); // LineFeed senden UB_Uart_SendByte(uart, 0x0D); // CariageReturn senden } else if (end_cmd == CRLF) { UB_Uart_SendByte(uart, 0x0D); // CariageReturn senden UB_Uart_SendByte(uart, 0x0A); // LineFeed senden } else if (end_cmd == LF) { UB_Uart_SendByte(uart, 0x0A); // LineFeed senden } else if (end_cmd == CR) { UB_Uart_SendByte(uart, 0x0D); // CariageReturn senden } }
//-------------------------------------------------------------- // einen String per UART senden //-------------------------------------------------------------- void UB_Uart_SendString(UART_NAME_t uart, char *ptr, UART_LASTBYTE_t end_cmd) { // sende kompletten String while (*ptr != 0) { UB_Uart_SendByte(uart,*ptr); ptr++; } // eventuell Endekennung senden if(end_cmd==LFCR) { UB_Uart_SendByte(uart,0x0A); // LineFeed senden UB_Uart_SendByte(uart,0x0D); // CariageReturn senden } else if(end_cmd==CRLF) { UB_Uart_SendByte(uart,0x0D); // CariageReturn senden UB_Uart_SendByte(uart,0x0A); // LineFeed senden } else if(end_cmd==LF) { UB_Uart_SendByte(uart,0x0A); // LineFeed senden } else if(end_cmd==CR) { UB_Uart_SendByte(uart,0x0D); // CariageReturn senden } }