#Programe de demonstration simple pour module TC/USB-18A
#3CC 11/04/14: DB : V1.00 Creation 

from TCUSB18A_Wrapper import *
from ctypes import *
import os
import time

def bin(n): 
    """Convertit un nombre en binaire""" 
    q = -1 
    res = '' 
    while q != 0: 
        q = n // 2 
        r = n % 2 
        res = `r` + res 
        n = q 
    return res

def wait():
    t1=time.clock()
    i=0
    while ((t1+0.5)>time.clock()):
        i=i+1

 


NumSerie= c_int(0)
ptrSN=pointer(NumSerie)
NModule=1
test=TCUSB18A_OpenN(NModule,ptrSN)

DataAna1=c_double(0)
ptrDataAna1=pointer(DataAna1)

DataAna2=c_double(0)
ptrDataAna2=pointer(DataAna2)

DataAna3=c_double(0)
ptrDataAna3=pointer(DataAna3)

DataAna4=c_double(0)
ptrDataAna4=pointer(DataAna4)

DataIn32=c_int(0)
ptrDataIn32=pointer(DataIn32)

Position=c_int(0)
ptrPosition=pointer(Position)

DataANA=c_double(0)


DataTOR=0
ch='a'
str=''


if (test==0):
    TCUSB18A_ResetPos(NModule)
    Position=0
    while(ch!='q'):
        TCUSB18A_AnaOutVolts(NModule,1,DataANA)
        TCUSB18A_AnaOutVolts(NModule,2,DataANA)
        TCUSB18A_Refresh(NModule)
        TCUSB18A_AnaInVolts(NModule,1,ptrDataAna1)
        TCUSB18A_AnaInVolts(NModule,2,ptrDataAna2)
        TCUSB18A_AnaInVolts(NModule,3,ptrDataAna3)
        TCUSB18A_AnaInVolts(NModule,4,ptrDataAna4)
        TCUSB18A_Pos(NModule,ptrPosition)
        TCUSB18A_Input(1,ptrDataIn32)
        
        print('Module TC/USB-18A %d'%NumSerie.value)
        print('Etat Codeur       %d'%Position)
        print('Etat sorties TOR: %d'%DataTOR)
        print('Etat entrees TOR: %s'%bin(DataIn32.value))

        print('Etat sorties Analogiques: %d'%DataANA.value)
        print('Etat entrees Analogiques: %.04f %.04f %.04f %.04f'%(DataAna1.value,DataAna2.value,DataAna3.value,DataAna4.value))

        print('Modifier valeur:')
        print(' 1 : sorties TOR')
        print(' 2 : sorties ANA')
        print(' Autre touche : Actualiser')
        print(' q : quitter')    

        ch=raw_input()
        if (ch=='1'):
            print(' Sorties TOR, valeur: (0->15)')
            str=raw_input()
            DataTOR=int(str)
            TCUSB18A_Output(NModule,DataTOR)
            TCUSB18A_Refresh(NModule)
        if ch==('2'):
            print('Sorties ANA, valeur (+10.0 / -10.0 V)')
            str=input()
            DataANA.value=float(str)
            print DataANA.value
            TCUSB18A_AnaOutVolts(NModule,1,DataANA)
            TCUSB18A_AnaOutVolts(NModule,2,DataANA)
            TCUSB18A_Refresh(NModule)
        wait()

    TCUSB18A_Close(NModule)
else:
    print ('Erreur module TCUSB18A absent')
