void* CVFD::ThreadScrollText(void * arg) { pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); int i; char *str = (char *)arg; int len = strlen(str); char out[j00zekVFDsize+1]; char buf[j00zekVFDsize+65]; memset(out, 0, j00zekVFDsize+1); int retries = g_settings.lcd_vfd_scroll; if (len > j00zekVFDsize) { printf("CVFD::ThreadScrollText: [%s], length %d\n", str, len); memset(buf, ' ', (len + j00zekVFDsize)); memcpy(buf, str, len); while(retries--) { // usleep(SCROLL_TIME); for (i = 0; i <= (len-1); i++) { // scroll text until end memcpy(out, buf+i, j00zekVFDsize); ShowNormalText(out,true); usleep(SCROLL_TIME*2); } } } memcpy(out, str, j00zekVFDsize); // display first j00zekVFDsize chars after scrolling ShowNormalText(out,true); pthread_exit(0); return NULL; }
void CVFD::ShowText(const char * str) { memset(g_str, 0, sizeof(g_str)); memcpy(g_str, str, sizeof(g_str)-1); int i = strlen(str); if (i > 63) { g_str[60] = '.'; g_str[61] = '.'; g_str[62] = '.'; g_str[63] = '\0'; i = 63; } ShowNormalText(g_str, false); }
void CVFD::ShowText(const char * str ) { j00zekDBG(DEBUG_DEBUG,"CVFD::ShowText(const char * str='%s' )\n",str); memset(g_str, 0, sizeof(g_str)); memcpy(g_str, str, sizeof(g_str)-1); int il = strlen(str); //j00zek- don't know why, but this returns stupid values j00zekDBG(DEBUG_DEBUG,"strlen(str)=%d, g_str=%s\n",il,g_str); if (il > 63) { g_str[60] = '.'; g_str[61] = '.'; g_str[62] = '.'; g_str[63] = '\0'; il = 63; } ShowNormalText(g_str, false); }