From: Mikhail <any...@ma...> - 2010-07-12 10:31:12
|
Seems mailing list can's show attachments. So, dup it in a plain test here. *** drv_MatrixOrbital.c.old 2010-07-12 09:34:57.000000000 +0400 --- drv_MatrixOrbital.c 2010-07-12 09:42:49.000000000 +0400 *************** *** 58,63 **** --- 58,65 ---- static int Model; static int Protocol; + static char dispBuffer[2][16]; + typedef struct { int type; char *name; *************** *** 98,103 **** --- 100,106 ---- {0x36, "LK202-24-USB", 2, 20, 8, 8, 2}, {0x38, "LK204-24-USB", 4, 20, 8, 8, 2}, {0x39, "VK204-24-USB", 4, 20, 8, 8, 2}, + {0x40, "DE-LD011", 2, 16, 0, 0, 3}, // Sure electronics USB LCD board Rev.I {0xff, "Unknown", -1, -1, 0, 0, 0} }; *************** *** 106,113 **** --- 109,141 ---- /*** hardware dependant functions ***/ /****************************************/ + + static void drv_MO_write(const int row, const int col, const char *data, const int len) + { + char cmd[5] = "\376Gyx"; + + cmd[3] = (char) row + 1; + + if (Models[Model].protocol == 3) { // Sure electronics USB LCD board - full line output + cmd[2] = (char) 1; + drv_generic_serial_write(cmd, 4); + + strncpy(&(dispBuffer[row][col]),data,len); + + drv_generic_serial_write(dispBuffer[row], 16); + } else { + cmd[2] = (char) col + 1; + drv_generic_serial_write(cmd, 4); + + drv_generic_serial_write(data, len); + } + } + + static void drv_MO_clear(void) { + int i,j; + switch (Protocol) { case 1: drv_generic_serial_write("\014", 1); /* Clear Screen */ *************** *** 115,133 **** case 2: drv_generic_serial_write("\376\130", 2); /* Clear Screen */ break; ! } ! } ! ! ! static void drv_MO_write(const int row, const int col, const char *data, const int len) ! { ! char cmd[5] = "\376Gyx"; ! ! cmd[2] = (char) col + 1; ! cmd[3] = (char) row + 1; ! drv_generic_serial_write(cmd, 4); ! drv_generic_serial_write(data, len); } --- 143,162 ---- case 2: drv_generic_serial_write("\376\130", 2); /* Clear Screen */ break; ! ! case 3: ! ! for (i=0;i<2;i++) { // Sure electronics USB LCD board - clear buffer ! for (j=0;j<16;j++) { ! dispBuffer[i][j] = ' '; ! } ! } ! ! drv_MO_write(1,1,dispBuffer[0],16); ! drv_MO_write(1,2,dispBuffer[1],16); ! break; ! } } *************** *** 301,313 **** info("%s: no '%s.Model' entry from %s, auto-dedecting", Name, section, cfg_source()); Model = -1; } ! if (drv_generic_serial_open(section, Name, 0) < 0) return -1; if (Model == -1 || Models[Model].protocol > 1) { /* read module type */ drv_generic_serial_write("\3767", 2); usleep(1000); if (drv_generic_serial_read(buffer, 1) == 1) { --- 330,351 ---- info("%s: no '%s.Model' entry from %s, auto-dedecting", Name, section, cfg_source()); Model = -1; } ! ! if (Models[i].protocol == 3) { // Sure electronics USB LCD board - full line output ! int i,j; ! for (i=0;i<2;i++) { // Clear buffer ! for (j=0;j<16;j++) { ! dispBuffer[i][j] = ' '; ! } ! } ! } if (drv_generic_serial_open(section, Name, 0) < 0) return -1; if (Model == -1 || Models[Model].protocol > 1) { /* read module type */ + drv_generic_serial_write("\3767", 2); usleep(1000); if (drv_generic_serial_read(buffer, 1) == 1) { *************** *** 543,554 **** --- 581,596 ---- /* clear display */ drv_MO_clear(); + + usleep(300000); /* say goodbye... */ if (!quiet) { drv_generic_text_greet("goodbye!", NULL); } + usleep(300000); + drv_generic_serial_close(); return (0); Thanks Mikhail |