1. Thermometer Program
- Posted by Andy Briggs <briggsan at HOTMAIL.COM> Jan 05, 2000
- 484 views
This program appears to be an excellent example of using the parallel port. I get an error, however, when I run it. Besides the fact that I don't have the custom thermometer interface, I don't have the files that the program includes at the beginning; include udelay.e -- Sligth modification of delay.e. Same but the include ports.e -- parameter is in milliseconds include bitwise.e -- I miss a fast bitwise SHR SHL here... include keypress.e -- Missing in get.e. Keypress() return true if include graphics.e -- a key has been pressed, but doesn't get the include font.e -- character. (This one is mine!) include file.e I do not own a copy of the registered Euphoria. Do these include files come withe the full version. If not, does anyone know where I can get copies of them. Here is the whole program: -- Termometer based upon a Dallas DS1620 chip via parallel port on the PC -- From an article appeared at Electronique Practique -- By Jesus Consuegra (jconsuegra at redestb.es) -- Acknowledgments to Robert Craig for such a nice environment, -- to Jiri Babor for the font procedures, -- to Jacques Deschemes for his help in delay. include udelay.e -- Sligth modification of delay.e. Same but the include ports.e -- parameter is in milliseconds include bitwise.e -- I miss a fast bitwise SHR SHL here... include keypress.e -- Missing in get.e. Keypress() return true if include graphics.e -- a key has been pressed, but doesn't get the include font.e -- character. (This one is mine!) include file.e -- Globals -- byte PortCommand constant PowerOn = #01, -- We power the termometer on by raising D0 PowerOff = #FE, ClockOn = #20, ClockOff = #DF, ResetOn = #BF, ResetOff = #40, OutHigh = #80, OutLow = #7F, OutPort = #378, -- Change this if you are using LPT2 or 3 InPort = OutPort + 1 -- --------------------------------------- procedure InitPort() Output(PowerOn, OutPort) uDelay(1000) end procedure -- --------------------------------------- procedure ClosePort() Output(PowerOff, OutPort) uDelay(1000) end procedure -- --------------------------------------- procedure SendControl(byte ControlData) byte Control Control = ControlData for i=0 to 7 do PortCommand = AND(PortCommand, ClockOff) Output(PortCommand, OutPort) if (remainder(Control,2)=0) then PortCommand = AND(PortCommand, OutLow) else PortCommand = OR(PortCommand, OutHigh) end if Output(PortCommand, OutPort) Control = floor (Control / 2) uDelay(5) PortCommand = OR(PortCommand, ClockOn) Output(PortCommand, OutPort) uDelay(5) end for end procedure -- -------------------------------------- procedure Reset() PortCommand = AND(PortCommand, ResetOn) Output(PortCommand, OutPort) uDelay(5) PortCommand = OR(PortCommand, ResetOff) Output(PortCommand, OutPort) uDelay(5) end procedure -- -------------------------------------- function ReadChip() integer DataIn byte temp PortCommand = 0 Reset() SendControl(#0C) SendControl(#03) Reset() SendControl(#EE) SendControl(#00) Reset() SendControl(#AA) PortCommand = OR(PortCommand, OutHigh) Output(PortCommand, OutPort) DataIn = 0 for i=0 to 8 do PortCommand = AND(PortCommand, ClockOff) Output(PortCommand, OutPort) uDelay(5) temp = Input(InPort) DataIn = DataIn + (AND(floor(temp/64), #01) * power(2,i)) PortCommand = OR(PortCommand, ClockOn) Output(PortCommand, OutPort) uDelay(5) end for return DataIn end function -- -------------------------------------- -- -- Main body -- -- -------------------------------------- integer Temp1 atom TempE sequence f integer Xt,Yt,X0,Y0, Xr, Yr InitPort() if graphics_mode(18) then end if X0 = 0 Y0 = 0 Xt = 276 Yt = 46 set_rand(12345) fy = 10 fsc = 0 ftc = 14 f ={} f = f&fload("Modern28.f") fx = 10 while (not keypressed()) do Temp1 = ReadChip() if (Temp1 >= 256) then Temp1 = Temp1 - 512 end if TempE = Temp1/2 -- printf(1, "La temperatura es %f grados\n", TempE) Xr = rand(639-Xt) Yr = rand(479-Yt) fx = Xr + 10 fy = Yr + 10 fprint(sprintf("La temperatura es: %-5.1f", TempE)) fp[1] = 0 fp[6] = 0 fx=10 fy=10 ftc=14 uDelay(1000) end while ClosePort() if graphics_mode(-1) then end if -- Freeports()
2. Re: Thermometer Program
- Posted by Kat <KSMiTH at PELL.NET> Jan 05, 2000
- 428 views
----- Original Message ----- From: Andy Briggs <briggsan at HOTMAIL.COM> To: <EUPHORIA at LISTSERV.MUOHIO.EDU> Sent: Wednesday, January 05, 2000 6:09 AM Subject: Thermometer Program > This program appears to be an excellent example of using the parallel > port. I get an error, however, when I run it. Besides the fact that I > don't have the custom thermometer interface, I don't have the files that > the program includes at the beginning; > include udelay.e -- Sligth modification of delay.e. Same but the > include ports.e -- parameter is in milliseconds > include bitwise.e -- I miss a fast bitwise SHR SHL here... > include keypress.e -- Missing in get.e. Keypress() return true if > include graphics.e -- a key has been pressed, but doesn't get the > include font.e -- character. (This one is mine!) > include file.e > > I do not own a copy of the registered Euphoria. Do these include files > come withe the full version. If not, does anyone know where I can get > copies of them. Yes, they are all in one zip file on the Eu archives page. However, all the files seem to prefer dos,, i can't get a one of them to run in win95, and i do have the complete edition. I haven't tried those files in dos, since i can write dos code easily, what i wanted was code that peacefully co-exists with windoze. The code as supplied gives me a dozen error msgs, from "can't load whatever.bmp" to "attempt to redefine something",, and of course, "out of bounds in win32lib" (caused no doubt by an ancient win32lib). Hardtst prints out some Spanish and "-0.5" on a dos screen, but since it's a exe or com file (i didn't bother checking which), it's impossible to interface it to anything well. I hope you have better luck than i do, Kat
3. Re: Thermometer Program
- Posted by Jesus Consuegra <jesus.consuegra at RETEMAIL.ES> Jan 06, 2000
- 426 views
Andy: The thermometer was fully functional and is still being used at the Pharmeceutical laboratory where I was working a year or so ago. I did several improvements, a Windows version, more accuracy and lately added the ability to save a temperature log. Even without the temp probe connected, you should get a -0.5 C degree reading. Up to my knowledge, the version at the Euphoria web site was complete, with all the .e files needed. Udelay (microdelay) and the other routines could probably be replaced by new features of the language. My current job is taking me most of my whole time (including nights and holidays), so I cannot promise to check the program soon, but I'll try. Most of the additional routines to manage ports, etc. were taken from the excelent Jiri Barbor libraries. Jesus. Asunto: Thermometer Program >This program appears to be an excellent example of using the parallel >port. I get an error, however, when I run it. Besides the fact that I >don't have the custom thermometer interface, I don't have the files that >the program includes at the beginning; >include udelay.e -- Sligth modification of delay.e. Same but the >include ports.e -- parameter is in milliseconds >include bitwise.e -- I miss a fast bitwise SHR SHL here... >include keypress.e -- Missing in get.e. Keypress() return true if >include graphics.e -- a key has been pressed, but doesn't get the >include font.e -- character. (This one is mine!) >include file.e > >I do not own a copy of the registered Euphoria. Do these include files >come withe the full version. If not, does anyone know where I can get >copies of them. > >Here is the whole program: > >-- Termometer based upon a Dallas DS1620 chip via parallel port on the PC >-- From an article appeared at Electronique Practique > >-- By Jesus Consuegra (jconsuegra at redestb.es) > >-- Acknowledgments to Robert Craig for such a nice environment, >-- to Jiri Babor for the font procedures, >-- to Jacques Deschemes for his help in delay. > > >include udelay.e -- Sligth modification of delay.e. Same but the >include ports.e -- parameter is in milliseconds >include bitwise.e -- I miss a fast bitwise SHR SHL here... >include keypress.e -- Missing in get.e. Keypress() return true if >include graphics.e -- a key has been pressed, but doesn't get the >include font.e -- character. (This one is mine!) >include file.e > > >-- Globals -- > >byte PortCommand > >constant PowerOn = #01, -- We power the termometer on by raising D0 > PowerOff = #FE, > ClockOn = #20, > ClockOff = #DF, > ResetOn = #BF, > ResetOff = #40, > OutHigh = #80, > OutLow = #7F, > OutPort = #378, -- Change this if you are using LPT2 or 3 > InPort = OutPort + 1 >-- --------------------------------------- >procedure InitPort() > Output(PowerOn, OutPort) > uDelay(1000) >end procedure >-- --------------------------------------- >procedure ClosePort() > Output(PowerOff, OutPort) > uDelay(1000) >end procedure >-- --------------------------------------- >procedure SendControl(byte ControlData) >byte Control >Control = ControlData >for i=0 to 7 do > PortCommand = AND(PortCommand, ClockOff) > Output(PortCommand, OutPort) > if (remainder(Control,2)=0) then > PortCommand = AND(PortCommand, OutLow) > else > PortCommand = OR(PortCommand, OutHigh) > end if > Output(PortCommand, OutPort) > Control = floor (Control / 2) > uDelay(5) > PortCommand = OR(PortCommand, ClockOn) > Output(PortCommand, OutPort) > uDelay(5) >end for >end procedure >-- -------------------------------------- >procedure Reset() > PortCommand = AND(PortCommand, ResetOn) > Output(PortCommand, OutPort) > uDelay(5) > PortCommand = OR(PortCommand, ResetOff) > Output(PortCommand, OutPort) > uDelay(5) >end procedure >-- -------------------------------------- >function ReadChip() >integer DataIn >byte temp > PortCommand = 0 > Reset() > SendControl(#0C) > SendControl(#03) > Reset() > SendControl(#EE) > SendControl(#00) > Reset() > SendControl(#AA) > PortCommand = OR(PortCommand, OutHigh) > Output(PortCommand, OutPort) > DataIn = 0 > for i=0 to 8 do > PortCommand = AND(PortCommand, ClockOff) > Output(PortCommand, OutPort) > uDelay(5) > temp = Input(InPort) > DataIn = DataIn + (AND(floor(temp/64), #01) * power(2,i)) > PortCommand = OR(PortCommand, ClockOn) > Output(PortCommand, OutPort) > uDelay(5) > end for > return DataIn >end function >-- -------------------------------------- >-- >-- Main body >-- >-- -------------------------------------- > >integer Temp1 >atom TempE >sequence f > >integer Xt,Yt,X0,Y0, > Xr, Yr > >InitPort() >if graphics_mode(18) then >end if > > X0 = 0 > Y0 = 0 > Xt = 276 > Yt = 46 > set_rand(12345) > > fy = 10 > fsc = 0 > ftc = 14 > f ={} > f = f&fload("Modern28.f") > fx = 10 > >while (not keypressed()) do > Temp1 = ReadChip() > if (Temp1 >= 256) then > Temp1 = Temp1 - 512 > end if > TempE = Temp1/2 >-- printf(1, "La temperatura es %f grados\n", TempE) > > Xr = rand(639-Xt) > Yr = rand(479-Yt) > fx = Xr + 10 > fy = Yr + 10 > fprint(sprintf("La temperatura es: %-5.1f", TempE)) > fp[1] = 0 > fp[6] = 0 > fx=10 > fy=10 > ftc=14 > uDelay(1000) >end while >ClosePort() >if graphics_mode(-1) then >end if >-- Freeports()
4. Re: Thermometer Program
- Posted by Jiri Babor <J.Babor at GNS.CRI.NZ> Jan 06, 2000
- 419 views
Jesus just wrote: >Most of the additional routines to manage ports, etc. were taken from the >excelent Jiri Barbor libraries. What he really meant were Jacques Deschenes' libraries. jiri
5. Re: Thermometer Program
- Posted by Greg Phillips <i.shoot at REDNECKS.COM> Jan 05, 2000
- 426 views
- Last edited Jan 06, 2000
Jiri Babor wrote: > Jesus just wrote: > Sorry for the off topic post, and I know most people want this list to be as non-sectarian as possible, but that just strikes me a damned funny. Greg
6. Re: Thermometer Program
- Posted by jiri babor <jbabor at PARADISE.NET.NZ> Jan 06, 2000
- 430 views
- Last edited Jan 07, 2000
Thanks, Greg. At least one of you noticed. jiri
7. Re: Thermometer Program
- Posted by Andy Briggs <briggsan at HOTMAIL.COM> Jan 06, 2000
- 484 views
- Last edited Jan 07, 2000
Hi, I found Ports.e by doing a search. I included it into my program, and with only one line of code [ Output(pos,#378) ] was able to write to the parallel port. How easy is that!!!!? I had no errors or anything; worked the first try. Thank you everyone for all your help...
8. Re: Thermometer Program
- Posted by Jesus Consuegra <jesus.consuegra at RETEMAIL.ES> Jan 08, 2000
- 451 views
Right!. More that one year away, memory fails... The nice routines I used in the Thermometer program from Jiri were the font ones... Sincere apologies to Jacques. Jesus. -----Mensaje original----- De: Jiri Babor <J.Babor at GNS.CRI.NZ> Para: EUPHORIA at LISTSERV.MUOHIO.EDU <EUPHORIA at LISTSERV.MUOHIO.EDU> Fecha: jueves 6 de enero de 2000 1:22 Asunto: Re: Thermometer Program >Jesus just wrote: > >>Most of the additional routines to manage ports, etc. were taken from the >>excelent Jiri Barbor libraries. > >What he really meant were Jacques Deschenes' libraries. jiri >