コード例 #1
0
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;
}
コード例 #2
0
ファイル: vfd.cpp プロジェクト: star1978/neutrino-mp-cst-next
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);
}
コード例 #3
0
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);
}