Stephen,

After some time, I now had reason to check the Pronto code
conversion of congruity, just to discover an error in the code:

You just copy the burst/space times entered as Pronto hex code
to the IR signal that is passed to libconcord.

However, in Pronto codes burst/space times are given in units of
the IR carrier cycle (which is provided by the second hex word,
in units of Pronto clock cycles), whereas libconcord expects 
burst/space times in microseconds.

So, what is missing is to multiply the Pronto duration values
by the IR carrier cycle (in microseconds).

See attached patch for the correction, where I also introduced
the value PRONTO_CLOCK=4145146 (Hz) to replace the 'magic'
value of (1000000 / .241246).

Andreas

diff -rpc -C1 congruity-10/congruity congruity-10+/congruity
*** congruity-10/congruity	2009-03-10 02:16:46.000000000 +0100
--- congruity-10+/congruity	2009-05-08 00:07:36.000000000 +0200
*************** class LearnIrEnterProntoHexPanel(WizardP
*** 1341,1346 ****
--- 1341,1347 ----
  
      def _OnValidate(self, event):
          try:
+ 	    PRONTO_CLOCK = 4145146
              bin = []
              str = ""
              str_idx = 0
*************** class LearnIrEnterProntoHexPanel(WizardP
*** 1364,1370 ****
              if bin[0] != 0:
                  raise Exception('Not RAW')
  
!             frequency = int(1000000 / (bin[1] * 0.241246))
  
              count_1 = 2 * bin[2]
              count_2 = 2 * bin[3]
--- 1365,1375 ----
              if bin[0] != 0:
                  raise Exception('Not RAW')
  
! 	    # IR Carrier frequency is given as number of Pronto clock cycles:
!             frequency = int(PRONTO_CLOCK / bin[1])
! 	    # pulse/space durations are given in IR carrier cycles,
! 	    # but we need them in microseconds:
! 	    ir_cycle = int(1000000 / frequency)
  
              count_1 = 2 * bin[2]
              count_2 = 2 * bin[3]
*************** class LearnIrEnterProntoHexPanel(WizardP
*** 1387,1398 ****
              idx = 0
  
              for i in range(count_1):
!                 self.resources.cur_ir_signal[idx] = bin[start_1 + i]
                  idx += 1
  
              for j in range(repeats):
                  for i in range(count_2):
!                     self.resources.cur_ir_signal[idx] = bin[start_2 + i]
                      idx += 1
  
              self._OnStatusOk()
--- 1392,1403 ----
              idx = 0
  
              for i in range(count_1):
!                 self.resources.cur_ir_signal[idx] = bin[start_1 + i] * ir_cycle
                  idx += 1
  
              for j in range(repeats):
                  for i in range(count_2):
!                     self.resources.cur_ir_signal[idx] = bin[start_2 + i] * ir_cycle
                      idx += 1
  
              self._OnStatusOk()
Nur in congruity-10+: congruity~.
------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image 
processing features enabled. http://p.sf.net/sfu/kodak-com
_______________________________________________
concordance-devel mailing list
concordance-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/concordance-devel

Reply via email to