void TFI_CJ_clean ( ) { #ifdef OLDCJTFI byte command[20]; int ret = 0; int i = 0; memset ( command , 0x00 , 20 ) ; command[1] = DISP_OUT_LED; //命令字 for (i=3;i<15;++i) { //数据,清除显示时数据内容为空 command[i] = ' '; } command[15] = 0; BBC(command); ret = serial_write(LED_COM,command ,18) ; #else byte command[20]; int ret = 0; memset ( command , 0x00 , 0x00 ) ; //0x97 清屏 AA 04 97 BB //0x98 清屏,语音:谢谢,祝您一路平安! AA 04 98 BB //0x99 您好 AA 04 99 BB //0xA0 谢谢 AA 04 A0 BB //0xA1 欢迎光临 AA 04 A1 BB //0xA2 别客气 AA 04 A2 BB //0xA3 请慢走 AA 04 A3 BB //0xA4 走好 AA 04 A4 BB //0xA5 再见 AA 04 A5 BB command[0] = 0xAA; command[1] = 0x04; command[2] = 0x97; command[3] = 0xBB; ret = serial_write(LED_COM,command ,4) ; #endif }
int msr_iso_write(int fd, msr_tracks_t * tracks) { int i; uint8_t buf[4]; msr_cmd (fd, MSR_CMD_WRITE); buf[0] = MSR_ESC; buf[1] = MSR_RW_START; serial_write (fd, buf, 2); for (i = 0; i < MSR_MAX_TRACKS; i++) { buf[0] = MSR_ESC; buf[1] = i + 1; serial_write (fd, buf, 2); serial_write (fd, tracks->msr_tracks[i].msr_tk_data, tracks->msr_tracks[i].msr_tk_len); } buf[0] = MSR_RW_END; buf[1] = MSR_FS; serial_write (fd, buf, 2); serial_readchar (fd, &buf[0]); serial_readchar (fd, &buf[0]); if (buf[0] != MSR_STS_OK) warnx("write failed"); return (0); }
void serial_println(uint8_t port, String output) { for (uint8_t i=0; i<output.length(); i++){ serial_write(port, output[i]); } serial_write(port, '\n'); serial_activate(port); }
int ulcd_blit(ulcd_dev *dev, uint16_t x, uint16_t y, uint16_t w, uint16_t h, const char* data) { char buf[10]; buf[0] = 0x49; buf[1] = x >> 8; buf[2] = x & 0xFF; buf[3] = y >> 8; buf[4] = y & 0xFF; buf[5] = w >> 8; buf[6] = w & 0xFF; buf[7] = h >> 8; buf[8] = h & 0xFF; buf[9] = 0x10; serial_write(dev->port, buf, 10); serial_write(dev->port, data, w*h*2); if(!check_result(dev, "Error while blitting.")) { return 0; } return 1; }
int ulcd_draw_text(ulcd_dev *dev, const char* text, int x, int y, int font, uint16_t color) { // Init int textlen = strlen(text); char buf[10]; // Commands buf[0] = 0x53; buf[1] = x >> 8; buf[2] = x & 0xFF; buf[3] = y >> 8; buf[4] = y & 0xFF; buf[5] = font & 0xFF; buf[6] = color >> 8; buf[7] = color & 0xFF; buf[8] = 0x01; buf[9] = 0x01; // Send data serial_write(dev->port, buf, 10); serial_write(dev->port, text, textlen); write_char(dev, 0x00); // Check results if(!check_result(dev, "Text drawing failed.")) { return 0; } return 1; }
static gboolean save(QahiraFormat *self, cairo_surface_t *surface, GOutputStream *stream, GCancellable *cancel, GError **error) { struct Private *priv = GET_PRIVATE(self); gboolean status = TRUE; guchar *data = qahira_format_surface_get_data(self, surface); if (!data) { g_set_error(error, QAHIRA_ERROR, QAHIRA_ERROR_FAILURE, Q_("serial: surface data is NULL")); goto error; } priv->header.stride = qahira_format_surface_get_stride(self, surface); if (0 > priv->header.stride) { g_set_error(error, QAHIRA_ERROR, QAHIRA_ERROR_FAILURE, Q_("serial: invalid stride")); goto error; } qahira_surface_size(surface, &priv->header.width, &priv->header.height); priv->header.content = cairo_surface_get_content(surface); status = serial_write(self, stream, cancel, (gpointer)&priv->header, sizeof(priv->header), error); if (!status) { goto error; } status = serial_write(self, stream, cancel, data, priv->header.stride * priv->header.height, error); exit: return status; error: status = FALSE; goto exit; }
void IRqueue(char *param_fname,int fd) { FILE *fp=NULL; FILE *fpq=NULL; int res,i; char buffer[255] = {0}; // buffer //check filename if exist printf(" Entering Queue mode: play commands from file\n"); fpq=fopen(param_fname,"r"); if (fpq==NULL) printf(" Queue command file does not exist. \n"); else { char cmdfile[255]; int len = 0; while (fgets(cmdfile, sizeof(cmdfile), fpq )){ len = strlen(cmdfile); if( cmdfile[len-1] == '\n' ) cmdfile[len-1] = 0; fp=fopen(cmdfile,"rb"); if (fp==NULL) { printf(" Comand file %s does not exist. \n", cmdfile); break; } else{ printf(" Sending command file %s \n", cmdfile); serial_write( fd, "\x03", 1); int comsresult = 0; while(!feof(fp)) { if ((res=fread(&buffer,sizeof(unsigned char),sizeof(buffer),fp)) > 0) { if (verbose){ printf(" ######Sending -%d- Bytes to IRToy...\n", res); for(i=0;i<res;i++) printf(" %02X ",(uint8_t) buffer[i]); printf("\n"); } comsresult = serial_write( fd, buffer, res); if (comsresult != res){ printf("## comms error bytes sent %d <> bytes supposed to be sent %d\n", comsresult, res); serial_write( fd, "\xFF\xFF\x00\x00\x00\x00\x00", 7); //trying to 'reset' IR Toy after error exit(-1); } comsresult = 0; #ifdef _WIN32 Sleep(500); //wait 500 milliseconds - for comms to finish, else get errors. Could try smaller, but no delay always fails & locks up the ORToy! #else sleep(500); //wait 500 milliseconds - for comms to finish, else get errors. Could try smaller, but no delay always fails & locks up the ORToy! #endif } } if(comsresult){ printf("comms error level 1 %d\n", comsresult); break; } } fclose(fp); } } fclose(fpq); }
int msr_raw_write(int fd, msr_tracks_t * tracks) { int i; uint8_t buf[4]; msr_cmd (fd, MSR_CMD_RAW_WRITE); buf[0] = MSR_ESC; buf[1] = MSR_RW_START; serial_write (fd, buf, 2); for (i = 0; i < MSR_MAX_TRACKS; i++) { buf[0] = MSR_ESC; /* start delimiter */ buf[1] = i + 1; /* track number */ buf[2] = tracks->msr_tracks[i].msr_tk_len; /* data length */ serial_write (fd, buf, 3); serial_write (fd, tracks->msr_tracks[i].msr_tk_data, tracks->msr_tracks[i].msr_tk_len); } buf[0] = MSR_RW_END; buf[1] = MSR_FS; serial_write (fd, buf, 2); serial_readchar (fd, &buf[0]); serial_readchar (fd, &buf[0]); if (buf[0] != MSR_STS_OK) warnx("raw write failed"); return (0); }
void TFI_CJ_LedShow ( int CarType , int charge ) { #ifdef OLDCJTFI byte command[20]; int ret = 0; memset ( command , 0x00 , 20 ) ; command[1] = DISP_OUT_LED; //命令字 sprintf(&command[3],"% 4d% 4d% 4d",CarType,charge,0); if(charge) { command[15] = CarType; } BBC(command); ret = serial_write(LED_COM,command ,18) ; #else byte command[20]; int ret = 0; memset ( command , 0x00 , 20 ) ; //金额显示器显示 1 型车 金额 25元 余额不显示,语音:1型车 缴费25元 //AA 0B 95 31 30 32 35 30 30 30 BB if(CarType>0&&CarType<10&&charge>0) { command[0] = 0xAA; command[1] = 0x0B; command[2] = 0x95;//95报价 95不报价 sprintf(&command[3],"%d%03d%03d",CarType,charge,0); command[10] = 0xBB; ret = serial_write(LED_COM,command ,11) ; } #endif }
static void serial_write_hex_digit(const uint32_t value) { if( value < 10 ) { serial_write((uint8_t)value + (uint8_t)'0'); } else if( value < 16 ) { serial_write((uint8_t)(value - 10) + (uint8_t)'A'); } else { serial_write('?'); } }
inline void sendByte(unsigned char b) { if (b==HDLC_frameFlag || b==HDLC_escapeFlag) { serial_write(HDLC_escapeFlag); b ^= HDLC_escapeXOR; } serial_write(b); }
void loop() { serial_write("TEST\n\r"); if (serial_available()) { serial_write("caractere"); caractere=serial_read(); serial_write(chaine); serial_write(&caractere); } }
static void gprs_uart_tx(uint8_t *pData, uint16_t len) { DBG_ASSERT(pData != NULL __DBG_LINE); DBG_ASSERT(len != 0 __DBG_LINE); #if GPRS_DEBUG serial_write(HAL_UART_2, pData, len); #endif serial_write(HAL_UART_4, pData, len); }
void acc_dump(void) { #ifdef ENABLE_DEBUG_SERIAL_DUMP serial_write_str("ACC: "); for (uint8_t i=0; i<3; i++) { serial_write_int(acc_data[i]); serial_write(' '); } serial_write('\n'); #endif }
void test_loopback(void) { serial_t serial; unsigned int count; time_t start, stop; uint8_t lorem_ipsum[] = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; uint8_t lorem_hugesum[4096*3]; uint8_t buf[sizeof(lorem_hugesum)]; ptest(); passert(serial_open(&serial, device, 115200) == 0); /* Test write/flush/read */ passert(serial_write(&serial, lorem_ipsum, sizeof(lorem_ipsum)) == sizeof(lorem_ipsum)); passert(serial_flush(&serial) == 0); passert(serial_read(&serial, buf, sizeof(lorem_ipsum), -1) == sizeof(lorem_ipsum)); passert(memcmp(lorem_ipsum, buf, sizeof(lorem_ipsum)) == 0); /* Test poll/write/flush/poll/input waiting/read */ passert(serial_poll(&serial, 500) == 0); /* Should timeout */ passert(serial_write(&serial, lorem_ipsum, sizeof(lorem_ipsum)) == sizeof(lorem_ipsum)); passert(serial_flush(&serial) == 0); passert(serial_poll(&serial, 500) == 1); usleep(500000); passert(serial_input_waiting(&serial, &count) == 0); passert(count == sizeof(lorem_ipsum)); passert(serial_read(&serial, buf, sizeof(lorem_ipsum), -1) == sizeof(lorem_ipsum)); passert(memcmp(lorem_ipsum, buf, sizeof(lorem_ipsum)) == 0); /* Test non-blocking poll */ passert(serial_poll(&serial, 0) == 0); /* Test a very large read-write (likely to exceed internal buffer size (~4096)) */ memset(lorem_hugesum, 0xAA, sizeof(lorem_hugesum)); passert(serial_write(&serial, lorem_hugesum, sizeof(lorem_hugesum)) == sizeof(lorem_hugesum)); passert(serial_flush(&serial) == 0); passert(serial_read(&serial, buf, sizeof(lorem_hugesum), -1) == sizeof(lorem_hugesum)); passert(memcmp(lorem_hugesum, buf, sizeof(lorem_hugesum)) == 0); /* Test read timeout */ start = time(NULL); passert(serial_read(&serial, buf, sizeof(buf), 2000) == 0); stop = time(NULL); passert((stop - start) > 1); /* Test non-blocking read */ start = time(NULL); passert(serial_read(&serial, buf, sizeof(buf), 0) == 0); stop = time(NULL); /* Assuming we weren't context switched out for a second and weren't on a * thin time boundary ;) */ passert((stop - start) == 0); passert(serial_close(&serial) == 0); }
inline void sendFrame1(unsigned int value) { unsigned int checksum=0xaa; serial_write(HDLC_frameFlag); sendByte(value); checksum ^= value; sendByte(checksum); serial_write(HDLC_frameFlag); }
static int shearwater_common_slip_write (shearwater_common_device_t *device, const unsigned char data[], unsigned int size) { int n = 0; const unsigned char end[] = {END}; const unsigned char esc_end[] = {ESC, ESC_END}; const unsigned char esc_esc[] = {ESC, ESC_ESC}; #if 0 // Send an initial END character to flush out any data that may have // accumulated in the receiver due to line noise. n = serial_write (device->port, end, sizeof (end)); if (n != sizeof (end)) { return EXITCODE(n); } #endif for (unsigned int i = 0; i < size; ++i) { const unsigned char *seq = NULL; unsigned int len = 0; switch (data[i]) { case END: // Escape the END character. seq = esc_end; len = sizeof (esc_end); break; case ESC: // Escape the ESC character. seq = esc_esc; len = sizeof (esc_esc); break; default: // Normal character. seq = data + i; len = 1; break; } n = serial_write (device->port, seq, len); if (n != len) { return EXITCODE(n); } } // Send the END character to indicate the end of the packet. n = serial_write (device->port, end, sizeof (end)); if (n != sizeof (end)) { return EXITCODE(n); } return size; }
void serial_proxy(int com) { console_write("Serial proxy on\n"); while (1) { int len_a = serial_proxy_read(__console, __buf_a); int len_b = serial_proxy_read(com, __buf_b); if (len_a > 0) { serial_write(com, len_a, __buf_a); } if (len_b > 0) { serial_write(__console, len_b, __buf_b); } } }
/* * erases OLS flash * pump_fd - fd of pump com port */ int PUMP_FlashErase(int pump_fd, int flashid) { static const uint8_t cmd[4] = {0x04, 0x00, 0x00, 0x00}; uint8_t status; int res; int retry = 0; if (flashid < 0) return OLSRESULT_FLASHID_UNKNOWN; res = serial_write(pump_fd, cmd, 4); if (res != 4) return OLSRESULT_CMDWRITE_ERROR; while (1) { res = serial_read(pump_fd, &status, 1); if (res < 1) retry++; if (res == 1) return (status == 0x01) ? OLSRESULT_SUCCESS : OLSRESULT_ERASE_ERROR; // 20 second timenout if (retry > 60) return OLSRESULT_TIMEOUT; } return OLSRESULT_SUCCESS; }
/* * Does OLS self-test * pump_fd - fd of pump com port */ int PUMP_selftest(int pump_fd) { static const uint8_t cmd[4] = {0x07, 0x00, 0x00, 0x00}; uint8_t status; int res, retry; res = serial_write(pump_fd, cmd, 4); if (res != 4) return OLSRESULT_CMDWRITE_ERROR; retry=0; while (1) { res = serial_read(pump_fd, &status, 1); if (res<1) retry++; if (res == 1) break; // 20 second timenout if (retry > 60) return OLSRESULT_TIMEOUT; } if (status & 0x01) return OLSRESULT_1V2SUPPLY_BAD; if (status & 0x02) return OLSRESULT_2V5SUPPLY_BAD; if (status & 0x04) return OLSRESULT_PROGB_BAD; if (status & 0x08) return OLSRESULT_DONE_BAD; if (status & 0x10) return OLSRESULT_UNKNOWN_JEDICID; if (status & 0x20) return OLSRESULT_UPDATE_BAD; return OLSRESULT_SUCCESS; }
int main(int argc, char *argv[]) { int serial_dev; int ret; char data[256]; if (argc < 2) { fprintf(stderr, "Please specify serial device to use \r\n"); return -1; } printf("Serial device to open: %s \r\n", argv[1]); serial_dev = serial_open(argv[1]); if (serial_dev < 0) { fprintf(stderr, "Unable to open serial device: %s: %s\r\n", argv[1], strerror(errno)); return -1; } if (serial_setup(serial_dev, 115200)) { fprintf(stderr, "Unable to setup serial device: %s: %s\r\n", argv[1], strerror(errno)); } while (1) { serial_write(serial_dev, "Testing"); ret = serial_read(serial_dev, data, sizeof(data)); if (ret <= 0) { printf("No data available \r\n"); } else { printf("Serial data received:\r\n"); printf("%s\r\n", data); } sleep(1); } }
bool DDAProtocol :: exec() { int errorCount = ERROR_COUNT; while(!m_terminated) { if(rxPacket()) { errorCount = ERROR_COUNT; unsigned txSize = m_txData.size(); if(!txSize) { //Send ACK unsigned char tx = ACK; serial_write(m_serial, &tx, 1); } else { txPacket(); waitAck(); } handleData(m_rxData); m_rxData.clear(); } else { if(--errorCount <= 0) return false; } } return true; }
// Write a string from program memory to the serial port static void serial_writestr_P(const char* s) { char c=pgm_read_byte(s); while (c!=0) { serial_write(c); c=pgm_read_byte(++s); } }
int get_dht11(serial *s,struct DHT11* data) { int state=0; // static int count_err=0; //连续错误次数 char buffer[128]; serial_write(s,"DHT11"); usleep(90000); serial_read(s, buffer, '\n', 128); debug("receive from serial's data length is :%d\n",strlen(buffer)); debug("receive from serial's data content is :%s\n",buffer); //判定接收到的字符串长度,小于50失败 if(strlen(buffer)>50){ sscanf(buffer,"%*s%*s%*s%*s%d%*s%d",&data->temp,&data->rehum); debug("temp:%d rehum:%d\n",data->temp,data->rehum); if(data->rehum>100||data->rehum<0||data->temp<0||data->temp>80){ state=1; // count_err++; //连续错误累加 } }else{ state=1; } // if(count_err>=100){ //如果连续错误超过100次,仍然将函数返回值置0,目的是为了让程序跳出死循环 // state=0; // } // // if(state==0){ // count_err=0; // } return state; }
void serial_write_block(unsigned char *ch, int len) { #if 1 while (len--) serial_write(*ch++); serial_sync (); #else DWORD num; if (verbose > 1) { int i; printf("\033[36m[%d]\033[0m", len); for (i=0; i<len; i++) dw (ch[i]); } while (len > 32) { FT_Write (handle, ch, 32, &num); ch += 32; len -= 32; serial_sync (); } if (len) FT_Write (handle, ch, len, &num); serial_sync (); #endif }
static int scpi_serial_send(void *priv, const char *command) { int len, result, written; gchar *terminated_command; struct scpi_serial *sscpi = priv; struct sr_serial_dev_inst *serial = sscpi->serial; terminated_command = g_strconcat(command, "\n", NULL); len = strlen(terminated_command); written = 0; while (written < len) { result = serial_write(serial, terminated_command + written, len - written); if (result < 0) { sr_err("Error while sending SCPI command: '%s'.", command); g_free(terminated_command); return SR_ERR; } written += result; } g_free(terminated_command); sr_spew("Successfully sent SCPI command: '%s'.", command); return SR_OK; }
static int nma_send_req(const struct sr_dev_inst *sdi, int req, char *params) { struct sr_serial_dev_inst *serial; struct dev_context *devc; char buf[NMADMM_BUFSIZE]; int len; if (!sdi || !(serial = sdi->conn) || !(devc = sdi->priv)) return SR_ERR_BUG; len = snprintf(buf, sizeof(buf), "%s%s\r\n", nmadmm_requests[req].req_str, params ? params : ""); sr_spew("Sending request: '%s'.", buf); devc->last_req = req; devc->last_req_pending = TRUE; if (serial_write(serial, buf, len) == -1) { sr_err("Unable to send request: %d %s.", errno, strerror(errno)); devc->last_req_pending = FALSE; return SR_ERR; } return SR_OK; }
void get_bt_status(void) { int key; char show_buffer[50]; char des[10] = {0}; while (1) { lcd_clrscr(); lcd_disp_string(0, 0, " 蓝牙状态 "); serial_clrbuf(CONFIG_BT_SERIAL_NUM, 1, 0); serial_write(CONFIG_BT_SERIAL_NUM, "AT+STATUS\r\n", sizeof("AT+STATUS\r\n")); serial_read(CONFIG_BT_SERIAL_NUM, show_buffer, 20, 300); if(!strncmp(show_buffer, "+STATUS=", sizeof("+STATUS=") - 1)){ des[0] = show_buffer[sizeof("+STATUS=") - 1]; if (strcmp(des, "2") == 0) lcd_disp_string(0, 16, "蓝牙已连接"); else if (strcmp(des, "1") == 0) lcd_disp_string(0, 16, "蓝牙广播中..."); else if (strcmp(des, "0") == 0) lcd_disp_string(0, 16, "蓝牙空闲"); else lcd_disp_string(0, 16, "未知状态"); } else lcd_disp_string(0, 16, "获取失败"); key = kb_get_key(0); if (key == KEY_ESC) return; } }
void get_name(void) { int key, i; char show_buffer[64] = {0}; char name[17] = {0}; while (1) { lcd_clrscr(); lcd_disp_string(0, 0, " 蓝牙名称 "); /*获取蓝牙地址*/ serial_clrbuf(CONFIG_BT_SERIAL_NUM, 1, 0); serial_write(CONFIG_BT_SERIAL_NUM, "AT+NAME\r\n", sizeof("AT+NAME\r\n")); serial_read(CONFIG_BT_SERIAL_NUM, show_buffer, 64, 300); if(!strncmp("+NAME=\"", show_buffer, 7)){ for(i = 0; i < 16; i ++) { if (show_buffer[7 + i] == '\"') break; name[i] = show_buffer[7 + i]; } lcd_disp_string(0, 16, name); } else lcd_disp_string(0, 16, "获取失败"); key = kb_get_key(0); if (key == KEY_ESC) return; } }
void get_mac(void) { int key; char show_buffer[64]; char addr[18]; while (1) { lcd_clrscr(); lcd_disp_string(0, 0, " 蓝牙MAC地址 "); /*获取蓝牙地址*/ serial_clrbuf(CONFIG_BT_SERIAL_NUM, 1, 0); serial_write(CONFIG_BT_SERIAL_NUM, "AT+LADDR\r\n", sizeof("AT+LADDR\r\n")); serial_read(CONFIG_BT_SERIAL_NUM, show_buffer, 64, 300); if(!strncmp("+LADDR=", show_buffer, 7)){ memcpy(addr, show_buffer + 7, 17); lcd_disp_string(0, 16, addr); } else lcd_disp_string(0, 16, "获取失败"); key = kb_get_key(0); if (key == KEY_ESC) return; } }