//--------------------------------------------------------------------------------// //- HemLcd Sysquake Interface -// //- -// //- Copyright (C) Alexandre Colot, K-Team S.A. 2003 -// //- This library is free software; you can redistribute it and/or -// //- modify it under the terms of the GNU Lesser General Public -// //- License as published by the Free Software Foundation; either -// //- version 2.1 of the License, or any later version. -// //- -// //- This library is distributed in the hope that it will be useful, -// //- but WITHOUT ANY WARRANTY; without even the implied warranty of -// //- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// //- Lesser General Public License for more details. -// //- -// //- You should have received a copy of the GNU Lesser General Public -// //- License along with this library; if not, write to the Free Software -// //- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// //- -// //- -// //- __ __ ________ -// //- K-Team S.A. | |/ /|__ __|___ _____ ___ ___ -// //- Chemin de Vuasset, CP 111 | / __ | | _____|/ _ \| \/ | -// //- 1028 Preverenges | | \ | | ____|/ /_\ | | -// //- Switzerland |__|\__\ |__|______|_/ \_|__|\/|__| -// //- alexandre.colot@k-team.com tel:+41 21 802 5472 fax:+41 21 802 5471 -// //- -// //--------------------------------------------------------------------------------// help {@ @} //=============================================================================================== // Variables //=============================================================================================== variable fd // serial port variable comport variable com variable start variable line1 variable line1text variable line1position variable line1positionnumber variable line2 variable line2text variable line2position variable line2positionnumber variable pixels variable pixelsthresholded variable led variable threshold variable expositiontime variable interruptors variable backlight variable contrast variable refreshrate variable osversion //================================================================================================================ // Functions prototypes //================================================================================================================ init (fd,refreshrate,comport,com,start,backlight,line1,line2,line1text,line2text,line1position,line1positionnumber,line2position,line2positionnumber,interruptors,contrast) = Init figure "Interruptors" draw drawinterruptors(interruptors) figure "ComPort" draw drawComPort(comport,com,start) mousedrag (start,comport,com) = dragComPort(start,comport,com,_id,_x1) figure "Line1" draw drawLine1(line1,line1position) mousedrag (line1,line1text,line1position,line1positionnumber) = dragLine1(_id,_x1,line1,start,line1text,line1position,line1positionnumber) figure "Line2" draw drawLine2(line2,line2position) mousedrag (line2,line2text,line2position,line2positionnumber) = dragLine2(_id,_x1,line2,start,line2text,line2position,line2positionnumber) //figure "OsVersion" //draw drawOsVersion(osversion) figure "Controls" draw drawControls(osversion,backlight,contrast) mousedrag (fd,backlight,contrast) = dragControls(fd,_id,_x1,start,comport,backlight,contrast) figure "Comments" draw drawComments() idle (_idlerate,pixels,pixelsthresholded,osversion,interruptors) = Refresh(fd,pixels,pixelsthresholded,start,comport,osversion,backlight,line1text,line2text,line1positionnumber,line2positionnumber,interruptors,contrast) //=================================================================================================== // Functions //=================================================================================================== functions {@ function (fd,refreshrate,comport,com,start,backlight,line1,line2,line1text,line2text,line1position,line1positionnumber,line2position,line2positionnumber,interruptors,contrast) = Init subplots('Line1\tLine2\tInterruptors\nComPort\tControls\tComments'); refreshrate = 1 comport = 'COM1'; line1 = 1; line1text = 1; line2text = 1; line1position = 1; line1positionnumber = 0; line2position = 1; line2positionnumber = 0; line2 = 1; start = 0; interruptors(1,1) = 0; interruptors(1,2) = 0; interruptors(1,3) = 0; com = 1; fd = 0; osversion = 0; backlight = 0; contrast = 220; function drawLine1(line1,line1position) plotoption('nolabel'); text(sprintf('______________________________________________')); text(sprintf('Please select text of the first line :')); settabs('X\t\boneXXXXX\t'); button(' \tHello\tHemisson\tK-TEAM', line1, 'radiobutton', '', 30); text(sprintf('______________________________________________')); text(sprintf('Please select alignement type :')); settabs('X\t\boneXXXXX\t'); button(' \tLeft\tCentered\tRight', line1position, 'radiobutton', '', 32); text(sprintf('______________________________________________')); text(sprintf('')); function (line2,line2text,line2position,line2positionnumber) = dragLine2(id,x1,line2,start,line2text,line2position,line2positionnumber) switch id case {31} line2 = x1; switch line2 case 1 line2text = 1; case 2 line2text = 2; case 3 line2text = 3; end case {33} line2position = x1; switch line2position case 1 line2positionnumber = 0; case 2 line2positionnumber = 2; case 3 line2positionnumber = 3; end end function drawLine2(line2,line2position) plotoption('nolabel'); text(sprintf('______________________________________________')); text(sprintf('Please select text of the first line :')); settabs('X\t\boneXXXXX\t'); button(' \tHello\tHemisson\tK-TEAM', line2, 'radiobutton', '', 31); text(sprintf('______________________________________________')); text(sprintf('Please select alignement type :')); settabs('X\t\boneXXXXX\t'); button(' \tLeft\tCentered\tRight', line2position, 'radiobutton', '', 33); text(sprintf('______________________________________________')); text(sprintf('')); function (line1,line1text,line1position,line1positionnumber) = dragLine1(id,x1,line1,start,line1text,line1position,line1positionnumber) switch id case {30} line1 = x1; switch line1 case 1 line1text = 1; case 2 line1text = 2; case 3 line1text = 3; end case {32} line1position = x1; switch line1position case 1 line1positionnumber = 0; case 2 line1positionnumber = 2; case 3 line1positionnumber = 3; end end function drawComPort(comport,com,start) plotoption('nolabel'); text(sprintf('______________________________________________')); text(sprintf('Please select your COM Port :')); settabs('X\t\boneXX\t'); button(' \tCOM1\tCOM2\tCOM3\tCOM4 ', com, 'radiobutton', '', 20); text(sprintf('______________________________________________')); settabs([5,5]); if(start == 0) text(sprintf('Click here to start communication :')); button('Start :\t ', start, 'radiobutton', '', 0); else text(sprintf('Click here to stop communication :')); button('Stop :\t ', start, 'radiobutton', '', 0); end text(sprintf('______________________________________________')); text(sprintf('')); text(sprintf('')); text(sprintf('')); text(sprintf('')); text(sprintf('')); text(sprintf('')); text(sprintf('')); function (start,comport,com) = dragComPort(start,comport,com,id,x1) switch id case 0 if(start == 0) start = x1; else start = 0; end case {20} com = x1; switch com case 1 comport = 'COM1'; case 2 comport = 'COM2'; case 3 comport = 'COM3'; case 4 comport = 'COM4'; end end function drawinterruptors(interruptors) label('Interruptor', 'Value'); scale([0,4,-1,2]); bar(interruptors(1,:)) function drawComments() plotoption('nolabel'); text(sprintf('______________________________________________')); text(sprintf('HemLCD Serial Remote Interface V1.0')); text(sprintf('')); text(sprintf('K-TEAM S.A. Switzerland (Alexandre Colot,2003)')); text(sprintf('')); text(sprintf('Web : www.hemisson.com')); text(sprintf('')); text(sprintf('SysQuake is a Calerga product (www.calerga.com)')); text(sprintf('______________________________________________')); text(sprintf('')); text(sprintf('')); text(sprintf('')); text(sprintf('')); text(sprintf('')); function drawControls(osversion,backlight,contrast) plotoption('nolabel'); text(sprintf('________________________________________________________________')); text(sprintf('OS Version :')); text(sprintf('%s',osversion)); text(sprintf('________________________________________________________________')); settabs([20,5]); slider(sprintf('BackLight [%d%%]:', (backlight/255)*100), backlight, [0, 255], '', '', 1); text(sprintf('________________________________________________________________')); settabs([20,5]); slider(sprintf('Contrast [%d%%]:', (contrast/255)*100), contrast, [0, 255], '', '', 2); text(sprintf('________________________________________________________________')); text(sprintf('')); text(sprintf('')); text(sprintf('')); text(sprintf('')); text(sprintf('')); function (fd,backlight,contrast) = dragControls(fd,id,x1,start,comport,backlight,contrast) switch id case {1,2} if(start == 1) if (id == 1) backlight = round(x1) end if (id == 2) contrast = round(x1) end end end function (idlerate,pixels,pixelsthresholded,osversion,interruptors) = Refresh(fd,pixels,pixelsthresholded,start,comport,osversion,backlight,line1text,line2text,line1positionnumber,line2positionnumber,interruptors,contrast) if(start == 1) fd = opendevice(comport, 'b115200,t,T5000,s1'); osversion = HemLcd_OsVersion(fd,osversion); HemLcd_BackLight(fd,backlight); HemLcd_Contrast(fd,contrast); HemLcd_Send_Line1(fd,line1text,line1positionnumber); HemLcd_Send_Line2(fd,line2text,line2positionnumber); interruptors = HemLcd_Interruptors(fd,interruptors); closedevice(fd); end idlerate = 0.5; //========================================= // HemLcd_Backlight //========================================= function HemLcd_BackLight(fd,backlight) fprintf(fd,'W'); delay fprintf(fd,','); delay fprintf(fd,'A'); delay fprintf(fd,'0'); delay fprintf(fd,','); delay fprintf(fd,'4'); delay fprintf(fd,'0'); delay fprintf(fd,','); delay fprintf(fd,'%2X',backlight); delay fprintf(fd,'%c',13); delay osversion = fgetl(fd); //========================================= // HemLcd_Interruptors //========================================= function interruptors = HemLcd_Interruptors(fd,interruptors) fprintf(fd,'R'); delay fprintf(fd,','); delay fprintf(fd,'A'); delay fprintf(fd,'0'); delay fprintf(fd,','); delay fprintf(fd,'1'); delay fprintf(fd,'0'); delay fprintf(fd,','); delay fprintf(fd,'0'); delay fprintf(fd,'3'); delay fprintf(fd,'%c',13); delay reply = fgetl(fd); if(reply(1,1) == 'r' ) for i=1:3; interruptors(1,i) = (reply(1,(i*4)-1)-48)*100+(reply(1,i*4)-48)*10+reply(1,(i*4)+1)-48; end end //========================================= // HemLcd_OsVersion //========================================= function (osversion)=HemLcd_OsVersion(fd,osversion) fprintf(fd,'R'); delay fprintf(fd,','); delay fprintf(fd,'A'); delay fprintf(fd,'0'); delay fprintf(fd,','); delay fprintf(fd,'0'); delay fprintf(fd,'0'); delay fprintf(fd,','); delay fprintf(fd,'0'); delay fprintf(fd,'1'); delay fprintf(fd,'%c',13); delay osversion = fgetl(fd); //========================================= // HemLcd_Backlight //========================================= function HemLcd_BackLight(fd,backlight) fprintf(fd,'W'); delay fprintf(fd,','); delay fprintf(fd,'A'); delay fprintf(fd,'0'); delay fprintf(fd,','); delay fprintf(fd,'4'); delay fprintf(fd,'0'); delay fprintf(fd,','); delay fprintf(fd,'%2X',backlight); delay fprintf(fd,'%c',13); delay osversion = fgetl(fd); //========================================= // HemLcd_Contrast //========================================= function HemLcd_Contrast(fd,contrast) fprintf(fd,'W'); delay fprintf(fd,','); delay fprintf(fd,'A'); delay fprintf(fd,'0'); delay fprintf(fd,','); delay fprintf(fd,'4'); delay fprintf(fd,'1'); delay fprintf(fd,','); delay fprintf(fd,'%2X',contrast); delay fprintf(fd,'%c',13); delay osversion = fgetl(fd); //========================================= // HemLcd_Send_Line1 //========================================= function HemLcd_Send_Line1(fd,line1text,line1positionnumber) fprintf(fd,'Y'); delay fprintf(fd,','); delay fprintf(fd,'A'); delay fprintf(fd,'0'); delay fprintf(fd,','); delay fprintf(fd,'1'); delay fprintf(fd,'%d',line1positionnumber); delay fprintf(fd,','); delay switch line1text case 0 fprintf(fd,'0'); delay fprintf(fd,'1'); delay fprintf(fd,','); delay fprintf(fd,'2'); delay fprintf(fd,'0'); delay fprintf(fd,'%c',13); delay reply = fgetl(fd); case 1 fprintf(fd,'0'); delay fprintf(fd,'5'); delay fprintf(fd,','); delay fprintf(fd,'4'); delay fprintf(fd,'8'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'5'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'C'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'C'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'F'); delay fprintf(fd,'%c',13); delay reply = fgetl(fd); case 2 fprintf(fd,'0'); delay fprintf(fd,'8'); delay fprintf(fd,','); delay fprintf(fd,'4'); delay fprintf(fd,'8'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'5'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'D'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'9'); delay fprintf(fd,','); delay fprintf(fd,'7'); delay fprintf(fd,'3'); delay fprintf(fd,','); delay fprintf(fd,'7'); delay fprintf(fd,'3'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'F'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'E'); delay fprintf(fd,'%c',13); delay reply = fgetl(fd); case 3 fprintf(fd,'0'); delay fprintf(fd,'6'); delay fprintf(fd,','); delay fprintf(fd,'4'); delay fprintf(fd,'B'); delay fprintf(fd,','); delay fprintf(fd,'2'); delay fprintf(fd,'D'); delay fprintf(fd,','); delay fprintf(fd,'5'); delay fprintf(fd,'4'); delay fprintf(fd,','); delay fprintf(fd,'4'); delay fprintf(fd,'5'); delay fprintf(fd,','); delay fprintf(fd,'4'); delay fprintf(fd,'1'); delay fprintf(fd,','); delay fprintf(fd,'4'); delay fprintf(fd,'D'); delay fprintf(fd,'%c',13); delay reply = fgetl(fd); end //========================================= // HemLcd_Send_Line2 //========================================= function HemLcd_Send_Line2(fd,line2text,line2positionnumber) fprintf(fd,'Y'); delay fprintf(fd,','); delay fprintf(fd,'A'); delay fprintf(fd,'0'); delay fprintf(fd,','); delay fprintf(fd,'2'); delay fprintf(fd,'%d',line2positionnumber); delay fprintf(fd,','); delay switch line2text case 0 fprintf(fd,'0'); delay fprintf(fd,'1'); delay fprintf(fd,','); delay fprintf(fd,'2'); delay fprintf(fd,'0'); delay fprintf(fd,'%c',13); delay reply = fgetl(fd); case 1 fprintf(fd,'0'); delay fprintf(fd,'5'); delay fprintf(fd,','); delay fprintf(fd,'4'); delay fprintf(fd,'8'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'5'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'C'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'C'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'F'); delay fprintf(fd,'%c',13); delay reply = fgetl(fd); case 2 fprintf(fd,'0'); delay fprintf(fd,'8'); delay fprintf(fd,','); delay fprintf(fd,'4'); delay fprintf(fd,'8'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'5'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'D'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'9'); delay fprintf(fd,','); delay fprintf(fd,'7'); delay fprintf(fd,'3'); delay fprintf(fd,','); delay fprintf(fd,'7'); delay fprintf(fd,'3'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'F'); delay fprintf(fd,','); delay fprintf(fd,'6'); delay fprintf(fd,'E'); delay fprintf(fd,'%c',13); delay reply = fgetl(fd); case 3 fprintf(fd,'0'); delay fprintf(fd,'6'); delay fprintf(fd,','); delay fprintf(fd,'4'); delay fprintf(fd,'B'); delay fprintf(fd,','); delay fprintf(fd,'2'); delay fprintf(fd,'D'); delay fprintf(fd,','); delay fprintf(fd,'5'); delay fprintf(fd,'4'); delay fprintf(fd,','); delay fprintf(fd,'4'); delay fprintf(fd,'5'); delay fprintf(fd,','); delay fprintf(fd,'4'); delay fprintf(fd,'1'); delay fprintf(fd,','); delay fprintf(fd,'4'); delay fprintf(fd,'D'); delay fprintf(fd,'%c',13); delay reply = fgetl(fd); end //========================================= // delay //========================================= function delay for i = 2:350 for j = 2:400 end end @}