//--------------------------------------------------------------------------------// //- HemGenIO 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 osversion variable analoginputs variable digitalinputs variable digitaloutputs //================================================================================================================ // Functions prototypes //================================================================================================================ init (fd,comport,com,start,analoginputs,digitalinputs,digitaloutputs) = Init figure "Analog Inputs" draw drawAnalog(analoginputs) figure "Digital Inputs" draw drawDigital(digitalinputs) figure "ComPort" draw drawComPort(comport,com,start) mousedrag (start,comport,com) = dragComPort(start,comport,com,_id,_x1) figure "Controls" draw drawControls(osversion,digitaloutputs) mousedrag (fd,digitaloutputs) = dragControls(fd,_id,_x1,start,comport,digitaloutputs) figure "Comments" draw drawComments() idle (_idlerate,osversion,analoginputs,digitalinputs) = Refresh(fd,start,comport,osversion,analoginputs,digitalinputs,digitaloutputs) //=================================================================================================== // Functions //=================================================================================================== functions {@ function (fd,comport,com,start,analoginputs,digitalinputs,digitaloutputs) = Init analoginputs = ones(1,5); digitalinputs = [0,0,0,0,0,0]; digitaloutputs = [0,0,0,0,0,0,0]; subplots('Analog Inputs\tDigital Inputs\nComPort\tControls\tComments'); comport = 'COM1'; start = 0; com = 1; fd = 0; osversion = 0; 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 drawAnalog(analoginputs) label('Input', 'Value'); scale([0,6,0,270]); bar(analoginputs(1,:)) function drawDigital(digitalinputs) label('Input', 'Value'); scale([0,7,0,1]); bar(digitalinputs(1,:)) function drawComments() plotoption('nolabel'); text(sprintf('______________________________________________')); text(sprintf('HemGenIO Serial Remote Interface V1.1')); 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,digitaloutputs) plotoption('nolabel'); text(sprintf('________________________________________________________________')); text(sprintf('OS Version :')); text(sprintf('%s',osversion)); text(sprintf('________________________________________________________________')); text(sprintf('Digital Outputs :')); button('D6 :\t ',digitaloutputs(1,1), 'radiobutton', '', 30); //button('D7 :\t ',digitaloutputs(1,2), 'radiobutton', '', 31); //button('D8 :\t ',digitaloutputs(1,3), 'radiobutton', '', 32); //button('D9 :\t ',digitaloutputs(1,4), 'radiobutton', '', 33); //button('D10 :\t ',digitaloutputs(1,5), 'radiobutton', '', 34); //button('D11 :\t ',digitaloutputs(1,6), 'radiobutton', '', 35); text(sprintf('________________________________________________________________')); text(sprintf('')); text(sprintf('')); text(sprintf('')); text(sprintf('')); text(sprintf('')); function (fd,digitaloutputs) = dragControls(fd,id,x1,start,comport,digitaloutputs) switch id case {30} if(start == 1) if (id == 30) if(digitaloutputs(1,1) == 0) digitaloutputs(1,1) = x1; else digitaloutputs(1,1) = 0; end end if (id == 31) if(digitaloutputs(1,2) == 0) digitaloutputs(1,2) = x1; else digitaloutputs(1,2) = 0; end end if (id == 32) if(digitaloutputs(1,3) == 0) digitaloutputs(1,3) = x1; else digitaloutputs(1,3) = 0; end end if (id == 33) if(digitaloutputs(1,4) == 0) digitaloutputs(1,4) = x1; else digitaloutputs(1,4) = 0; end end if (id == 34) if(digitaloutputs(1,5) == 0) digitaloutputs(1,5) = x1; else digitaloutputs(1,5) = 0; end end if (id == 35) if(digitaloutputs(1,6) == 0) digitaloutputs(1,6) = x1; else digitaloutputs(1,6) = 0; end end end end function (idlerate,osversion,analoginputs,digitalinputs) = Refresh(fd,start,comport,osversion,analoginputs,digitalinputs,digitaloutputs) if(start == 1) fd = opendevice(comport, 'b115200,t,T5000,s1'); osversion = HemGenIO_OsVersion(fd,osversion); analoginputs = HemGenIO_Analog(fd,analoginputs); digitalinputs = HemGenIO_Digital_In(fd,digitalinputs) HemGenIO_Digital_Out(fd,digitaloutputs); closedevice(fd); end idlerate = 0.05; //========================================= // HemGenIO_Analog //========================================= function (analoginputs) = HemGenIO_Analog(fd,analoginputs) for i=1:5; fprintf(fd,'R'); delay fprintf(fd,','); delay fprintf(fd,'D'); delay fprintf(fd,'0'); delay fprintf(fd,','); delay fprintf(fd,'1'); delay fprintf(fd,'%d',i-1); delay fprintf(fd,','); delay fprintf(fd,'0'); delay fprintf(fd,'1'); delay fprintf(fd,'%c',13); delay reply = fgetl(fd); analoginputs(1,i) = (reply(1,3)-48)*100+(reply(1,4)-48)*10+reply(1,5)-48; end //========================================= // HemGenIO_Digital_In //========================================= function (digitalinputs) = HemGenIO_Digital_In(fd,digitalinputs) for i=1:6; fprintf(fd,'R'); delay fprintf(fd,','); delay fprintf(fd,'D'); delay fprintf(fd,'0'); delay fprintf(fd,','); delay fprintf(fd,'2'); delay fprintf(fd,'%d',i-1); delay fprintf(fd,','); delay fprintf(fd,'0'); delay fprintf(fd,'1'); delay fprintf(fd,'%c',13); delay reply = fgetl(fd); digitalinputs(1,i) = (reply(1,3)-48)*100+(reply(1,4)-48)*10+reply(1,5)-48; end //========================================= // HemGenIO_Digital_Out //========================================= function HemGenIO_Digital_Out(fd,digitaloutputs) fprintf(fd,'W'); delay fprintf(fd,','); delay fprintf(fd,'D'); delay fprintf(fd,'0'); delay fprintf(fd,','); delay fprintf(fd,'2'); delay fprintf(fd,'6'); delay fprintf(fd,','); delay fprintf(fd,'0'); delay if(digitaloutputs(1,1) == 0) fprintf(fd,'0'); else fprintf(fd,'1'); end delay fprintf(fd,'%c',13); delay reply = fgetl(fd); //========================================= // HemGenIO_OsVersion //========================================= function (osversion)=HemGenIO_OsVersion(fd,osversion) fprintf(fd,'R'); delay fprintf(fd,','); delay fprintf(fd,'D'); 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); //========================================= // delay //========================================= function delay for i = 2:350 for j = 2:400 end end @}