Announcement
Collapse
No announcement yet.
Visi and Serial communication not working
Collapse
X
-
byte manArgs
'G', 0, 0, 0, 0, 0, 0, 0, 0,
'G', 0, 0, 0, 0, 0, 0, 0, 0,
'G', 0, 0, 0, 0, 0, 0, 0, 0,
'G', 'I', 'X', 0, 0, 0, 0, 0, 0,
'G', 0, 0, 0, 0, 0, 0, 0, 0,
'G', 0, 0, 0, 0, 0, 0, 0, 0,
'2', 'I', 'I', 0, 0, 0, 0, 0, 0,
'G', 0, 0, 0, 0, 0, 0, 0, 0,
'G', 'G', 'I', 0, 0, 0, 0, 0, 0,
'G', 'A', 0, 0, 0, 0, 0, 0, 0,
'G', 0, 0, 0, 0, 0, 0, 0, 0,
'2', 'I', 'I', 0, 0, 0, 0, 0, 0,
'G', 'I', 'X', 0, 0, 0, 0, 0, 0,
'I', '3', '3', 0, 0, 0, 0, 0, 0,
'I', '3', '3', 0, 0, 0, 0, 0, 0,
'I', 'V', 'I', 0, 0, 0, 0, 0, 0,
'I', 'I', 'I', 'I', 'I', 'I', 'I', 'I', 'G',
'I', 'I', 0, 0, 0, 0, 0, 0, 0,
'I', 'Y', 'Y', 'I', 0, 0, 0, 0, 0,
'I', 'Y', 'Y', 'I', 0, 0, 0, 0, 0,
'I', 'Y', 'Y', 'I', 0, 0, 0, 0, 0,
'2', 0, 0, 0, 0, 0, 0, 0, 0,
'7', 0, 0, 0, 0, 0, 0, 0, 0,
'U', 0, 0, 0, 0, 0, 0, 0, 0,
'I', 'I', 'X', 0, 0, 0, 0, 0, 0,
'2', 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
'A', 0, 0, 0, 0, 0, 0, 0, 0,
'A', 0, 0, 0, 0, 0, 0, 0, 0,
'A', 'I', 0, 0, 0, 0, 0, 0, 0,
'U', 'I', 0, 0, 0, 0, 0, 0, 0,
'I', 'J', 0, 0, 0, 0, 0, 0, 0,
'I', '2', 0, 0, 0, 0, 0, 0, 0,
'I', 'I', 'I', 'I', 'K', 0, 0, 0, 0,
'G', '2', 0, 0, 0, 0, 0, 0, 0,
'2', 0, 0, 0, 0, 0, 0, 0, 0,
'I', 0, 0, 0, 0, 0, 0, 0, 0,
'I', 0, 0, 0, 0, 0, 0, 0, 0,
'I', 'I', 0, 0, 0, 0, 0, 0, 0
byte manArgC
1, 1, 1, 3, 1, 1, 3, 1, 3, 2, 1, 3, 3, 3, 3, 3,
9, 2, 4, 4, 4, 1, 1, 1, 3, 1, 0, 0, 1, 1, 2, 2,
2, 2, 5, 2, 1, 1, 1, 2
byte manRet
1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 3, 3, 1,
0, 5, 0, 0, 0, 4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1,
1, 2, 0, 2, 2, 0, 1, 0
word manFunc
file_Count, file_Dir, file_Erase, file_Exec, file_Exists, file_FindFirst, file_GetS, file_LoadFunction, file_LoadImageControl, file_Open, file_PlayWAV, file_Read, file_Run, file_Size, file_Tell, file_Write,
gfx_Button, gfx_Orbit, gfx_Polygon, gfx_PolygonFilled, gfx_Polyline, media_RdSector, media_WrSector, putstr, file_CallFunction, sys_GetModel, sys_GetVersion, sys_GetPmmC, charheight, charwidth, file_PutC, file_PutS,
writeString, readString, blitComtoDisplay, file_FindFirstRet, file_FindNextRet, setbaudWait, peekM, pokeM
#END
//end inherit "SPE2FUNCCONSTS.INC"
#DATA
byte model
"Gen4-uLCD-43D\0"
#END
#CONST
version 0x0103
#END
func timer0timer()
if ( (stuff[0] == 0) // suppress splash display if already accessed
&& (stuff[1] == 0) )
txt_FontID(FONT3) ;
txt_MoveCursor(2, 26);
txt_FGcolour(WHITE);
putstr("4D Systems") ;
txt_MoveCursor(4, 27);
txt_FontID(FONT2) ;
txt_Height(2) ;
txt_Width(2) ;
txt_FGcolour(GRAY);
putstr("gen") ;
txt_FGcolour(RED);
putch('4') ;
txt_Height(1) ;
txt_Width(1) ;
txt_FontID(FONT3) ;
txt_MoveCursor(7, 24);
txt_FGcolour(WHITE);
putstr("gen4-u") ;
txt_FGcolour(RED);
putch('L') ;
txt_FGcolour(LIME) ;
putch('C') ;
txt_FGcolour(BLUE);
putch('D') ;
txt_FGcolour(WHITE);
putstr("-43D") ;
txt_FontID(FONT2) ;
txt_MoveCursor(15, 24) ;
print("SPE2 rev ", version >> 8, ".", version & 0x0F) ;
txt_MoveCursor(17, 24) ;
print("PmmC rev ", pmmcversion >> 8, ".", pmmcversion & 0x0F) ;
txt_MoveCursor(19, 24) ;
print("Comms 9600") ;
txt_MoveCursor(23, 21);
putstr("4D Systems (c)2015") ;
txt_MoveCursor(24, 20);
txt_FontID(FONT3) ;
txt_FGcolour(RED);
putstr("www.4dsystems.com.au") ;
gfx_Panel(0, 105, 205, 275, 67, DARKGRAY);
txt_Opacity(TRANSPARENT);
txt_MoveCursor(18, 17);
txt_FGcolour(DARKBLUE);
putstr(" Getting Started:") ;
txt_MoveCursor(19, 14);
putstr(" Please refer to the\n Quick Start Guide\n included with the display.") ;
txt_FontID(FONT3) ; // reset everything we changed
txt_FGcolour(LIME);
txt_MoveCursor(0, 0);
endif
endfunc
var stuff[10] ; // maxargs+1
var combuff[100] ;
var strbuff[256], pmmcversion ;
func serinw()
var i ;
while ((i := serin()) < 0) ;
return i ;
endfunc
func main()
var i, j, k, l, m, cmd, strp, t, fv[2], fr[2] ;
to(strbuff) ;
print(sys_PmmC());
k := str_Ptr(strbuff) ;
k := str_Find(&k, "\n");
k++ ;
flt_VAL(fr, k) ;
flt_FLOOR(fv, fr);
flt_SUB(fr,fr,fv) ;
flt_MUL(fr,fr,"10") ;
k := flt_FTOI(fv);
m := flt_FTOI(fr);
pmmcversion := k << 8 + m ;
sys_SetTimer(TIMER0, 5000) ;
sys_SetTimerEvent(TIMER0, timer0timer) ;
com_Init(combuff,200,0); // set up a interrupt driven ring buffer for comms 20, not enough, 100 ok
com_SetBaud(COM0,960);
gfx_OrbitInit(&strbuff[0], &strbuff[1]); // set result holders for orbit command, if used
repeat
if (com_Count() > 1) // outer loop
j := serin() << 8 + serin() ;
if (j > 0) // 'manual' command?
// manual commands will be 1..nn
if (j >= maxmancmds)
serout(NAK) ;
else
cmd := j-1 ;
stuff[i++] := manFunc[cmd] ;
k := cmd * maxmanargs ;
strp := str_Ptr(strbuff) ;
for (j := 0; j < manArgC[cmd]; j++)
switch (manArgs[j+k])
case 'K' :
break ;
case 'G' :
stuff[i++] := strp ;
repeat
l := serinw() ;
str_PutByte(strp++, l) ;
until (l == 0) ;
if (strp & 1) strp++ ;
break ;
case 'A' :
stuff[i++] := serinw() ;
break ;
case 'J' : // writestring
if (stuff[1])
strp := stuff[1] ;
l := str_Length(strp) ;
strp += l ;
if (strp & 1)
strp++ ;
else
strp += 2 ;
endif
else
strp += StringStart*2 ;
endif
stuff[i++] := strp ; // save for return
repeat
l := serinw() ;
str_PutByte(strp++, l) ;
until (l == 0) ;
break ;
case 'U' : // putstr
stuff[i++] := strbuff ;
repeat
l := serinw() ;
str_PutByte(strp++, l) ;
until (l == 0) ;
break ;
case 'V' : // file_Write
stuff[i] := stuff[i-1] ; // second parm is really length
stuff[i-1] := strp ; // first parm is really strbuf is this correct?
i++ ;
for (m := 0; m < stuff[2]; m++)
l := serinw() ;
str_PutByte(strp++, l) ;
next
break ;
case '2' : // also '4' and '6'
stuff[i++] := strbuff ; // media_RdSector, file_ReadString and file_GetS need word address
break ;
case '3' : // file_Size,tell, 2 args
stuff[i] := strbuff+i-2 ;
i++ ;
break ;
case '7' : // media_WrSector
stuff[i++] := strbuff ; // first parm is really strbuf is this correct?
for (m := 0; m < 512; m++)
l := serinw() ;
str_PutByte(strp++, l) ;
next
break ;
case 'I' : // also 'H', 'E', 'C', 'F', 'T' and 'R'
stuff[i++] := serinw() << 8 + serinw() ;
break ;
case 'X' : // array of args for file_run/exec /call
if (stuff[0] == file_CallFunction)
m := stuff[2] ;
k := stuff + 2 ;
i := m ;
else
m := stuff[2] ;
k := strbuff + ArgStart ;
stuff[2] := k ;
*(k++) := m ;
endif
for (l := 0; l < m; l++)
*(k++) := serinw() << 8 + serinw() ;
next
break ;
case 'Y' : // array of args for Polyxxxx
if (i == 2) // x parms
stuff[i] := strbuff ;
else
stuff[i] := strbuff+128 ;
endif
for (l := 0; l < stuff[1]; l++)
*(stuff[i]+l) := serinw() << 8 + serinw() ;
next
i++ ;
break ;
default :
print("Missing Parameter handler ", [CHR] manArgs[j+k], "\n") ;
pause(5000) ;
endswitch
next
if (stuff[0] >= 0)
switch (stuff[0])
case file_CallFunction :
k := stuff[1](@&stuff[2], i);
break ;
case sys_GetModel :
to (strbuff) ;
// print("uLCD-???PT\0") ;
putstr(model) ;
k := strlen(strbuff) ;
break ;
case sys_GetVersion :
k := version ;
break ;
case sys_GetPmmC :
k := pmmcversion ;
break ;
case writeString :
k := stuff[2] ;
break ;
case readString :
strp := stuff[1] ;
k := str_Length(strp) ;
break ;
case blitComtoDisplay :
disp_setGRAM(stuff[1],stuff[2],stuff[1]+stuff[3]-1,stuff[2]+stuff[4]-1);
disp_BlitPixelsFromCOM0();
break ;
case file_FindFirstRet :
to (strbuff) ;
if (!file_FindFirst(stuff[1])) strbuff[0] := 0 ;
k := strlen(strbuff) ;
strp := str_Ptr(strbuff) ;
break ;
case file_FindNextRet :
to (strbuff) ;
if (!file_FindNext()) strbuff[0] := 0 ;
k := strlen(strbuff) ;
break ;
case setbaudWait :
setbaud(stuff[1]);
pause(100) ;
break ;
case peekM :
k := peekW(stuff[1]) ;
break ;
case pokeM :
pokeW(stuff[1], stuff[2]) ;
break ;
default :
print("Missing internal function ", stuff[0], "\n") ;
pause(5000) ;
endswitch
else
k := stuff[0](@&stuff[1], manArgC[cmd]);
endif
serout(ACK) ;
switch (manRet[cmd])
case 0 : break ;
case 1 :
serout(k >> 8) ;
serout(k) ;
break ;
case 2 : // Result + String (file_Gets, file_Read) and 6 : // Result + String (readstring)
serout(k >> 8) ;
serout(k) ;
for (i:= 0; i < k; i++)
serout(str_GetByte(strp++)) ; // strp should be valid from before command was issued
next
break ;
case 3 : // Result + 2Words (file_Size, file_Tell)
serout(k >> 8) ;
serout(k) ;
serout(strbuff[0] >> 8) ;
serout(strbuff[0]) ;
serout(strbuff[1] >> 8) ;
serout(strbuff[1]) ;
break ;
case 4 : // result + 512bytes (media_rdSector)
serout(k >> 8) ;
serout(k) ;
for (i:= 0; i < 512; i++)
serout(str_GetByte(strp++)) ; // strp should be valid from before command was issued
next
break ;
case 5 : // 2words (gfx_Orbit)
serout(strbuff[0] >> 8) ;
serout(strbuff[0]) ;
serout(strbuff[1] >> 8) ;
serout(strbuff[1]) ;
break ;
default :
print("Missing Return handler ", manRet[cmd], "\n") ;
pause(5000) ;
endswitch
i := 0 ;
endif
else // 'auto' command
cmd := -j ;
if ((cmd > maxcmds) || (cmd < 0)) cmd := 0 ; // if out of range then invalidate
stuff[i++] := j ;
if (funcArgs[cmd] == 0xff) // invalid command nakit now
serout(NAK) ;
i := 0 ;
else
repeat
if (funcArgs[cmd] == i) // everything ready, time to execute
k := stuff[0](@&stuff[1], funcArgs[cmd]-1);
serout(ACK) ;
if (funcRet[cmd])
serout(k >> 8) ;
serout(k) ;
endif
i := 0 ;
else
if (com_Count() > 1) // outer loop
j := serin() << 8 + serin() ;
stuff[i++] := j ;
endif
endif
until (i == 0) ;
endif
endif
endif
forever
endfunc
**********************************
Leave a comment:
-
Hi ,I will return to the fact that it is possible to change SPE programs for example SPE programs text for L SK-GEN4-43D
********************************
platform "Gen4-uLCD-43D"
// manargs could be reduced from 32*9 (288 bytes) to 32*4 (128 bytes)
// by placing the 0 arg commands after 'button' and letting the args run into them
// 2016/02/22 1.2 fixed PeekM and PokeM commands, they were not working
// 2018/09/28 1.3 Added ability to use a Workshop defined com port. This requires Workshop 4.6.0.0 or above
#inherit "4DGL_16bitColours.fnc"
#CONST
ACK 6
NAK 21
ArgStart 14
StringStart 24
#END
//#inherit "SPE2FUNCCONSTS.INC"
#CONST
maxcmds 569
maxmancmds 41
maxmanargs 9
file_CallFunction 1
sys_GetModel 2
sys_GetVersion 3
sys_GetPmmC 4
writeString 5
readString 6
blitComtoDisplay 7
file_FindFirstRet 8
file_FindNextRet 9
setbaudWait 10
peekM 11
pokeM 12
#END
#DATA
byte funcArgs // all 1 higher
255, 255, 2, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 255, 255, 255,
3, 3, 2, 2, 2, 2, 2, 2, 2, 255, 2, 2, 2, 2, 2, 2,
2, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0,
255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 255, 0, 0, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0,
3, 2, 2, 255, 2, 0, 0, 0, 0, 2, 1, 0, 0, 3, 1, 3,
255, 3, 255, 6, 255, 255, 6, 6, 5, 5, 4, 3, 8, 255, 0, 0,
0, 255, 255, 255, 255, 255, 5, 3, 1, 6, 6, 0, 255, 255, 255, 255,
255, 7, 9, 7, 255, 255, 255, 8, 0, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 2, 255, 2, 255, 2, 2, 2, 2, 2, 2,
2, 2, 255, 2, 2, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 3,
4, 3, 3, 0, 0, 1, 1, 2, 2, 3, 1, 1, 0, 0, 0, 0,
255, 255, 255, 0, 0, 255, 0, 0, 255, 255, 0, 0, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0,
255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0,
255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 255, 0, 255, 0, 0, 255,
0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0,
0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0,
255, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 0, 0, 0, 0,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 0, 0, 5, 3, 3, 3, 3, 5, 4, 3, 4, 4,
3, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 2, 255, 255, 5, 2, 2, 255, 255, 0, 0, 255, 255, 255,
255, 2, 1, 255, 255, 255, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2,
0, 4, 5, 0, 0, 0, 4, 6, 0, 2, 3, 2, 0, 0, 0, 2,
0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 1, 1,
1, 1, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0,
255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 0, 0, 0, 0, 0, 0,
0, 0, 255, 255, 255, 0, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0
byte funcRet
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1,
1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1,
0, 1, 1, 0, 0, 0, 1, 1, 0, 7, 1, 1, 0, 0, 0, 1,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0
#END
#DATA
Leave a comment:
-
Paul, great news that you're still working on it. I am extremely grateful and look forward to seeing what you come up with. Stay safe
Leave a comment:
-
Hi Simon,
I wasn't able to get this working in the Serial environment as it is so it would mean extra work in modifying / adding routines to accept the data and scroll up & down. I will continue to find a solution for this and update you as soon as possible.
Best regards
Paul
Leave a comment:
-
Hi P, Hope you are well and staying safe where ever you are. Have you had a chance / any joy with the serial solution? I've been trying but had no joy. I'd be grateful if you would respond to let me know if you can do any more or not. Thanks, Simon.
Leave a comment:
-
Hi P, Hope you are well and staying safe where ever you are. Have you had a chance / any joy with the serial solution?
Leave a comment:
-
Hi
I have and it isn't working out as well as I expected. I may have to rethink how to do this. I will update you you when I find a better solution.
Best regards
Paul
Leave a comment:
-
Hi Paul. Have you had a chance to look at implementing a serial environment please?
Leave a comment:
-
Hi Paul. Have you had a chance to look at implementing a serial environment please?
Leave a comment:
-
Hi,
The confusion might be that you started with a Designer project and then at some stage switched to using the Serial environment so all examples I created were for how you started your project development in Designer.
It's not impossible to do this and there will be a way that you can do this from the Serial environment. I will see how we can implement something similar from Serial.
Best regards
Paul
Leave a comment:
-
OK I'm being really thick here sorry, when I do the above it starts in serial environment but no buttons or scrolling appear like they do when I compile and load from 4DVisi environment. I can feel it is nealy there, just need to screen to remember the scrolling code when I connect it to the Arduino
Leave a comment:
-
Great,
Ok, it will only scroll by buttons on that example and can be coded to automatically scroll.
You can now set the project destination to RAM while testing.
To get the display back into the Serial Environment you need to follow these steps
1. Create a new project and choose your display.
2. Click on Serial as the Programming Environment.
3. Click on the Tools tab
4. Click on SPE Load
Your display will now start in the Serial environment.
Best regards
Paul
Leave a comment:
Leave a comment: