lire a l'adresse d'un com
lire a l'adresse d'un com
quand on fait : panneau de configuration, performance et maintenance
, systeme, gestionnaire de periphérique, Ports (COM et LTP), clic droit
sur "port de communication (COM1)", Propriété, Ressources,
on récupère des valeurs comme par exemples
Plage d'E/S 03F8 - 03FF
IRQ 04
je crois que ces valeurs sont les adresses du ports com 1
mais je n'arrive pas a y accéder !!
, systeme, gestionnaire de periphérique, Ports (COM et LTP), clic droit
sur "port de communication (COM1)", Propriété, Ressources,
on récupère des valeurs comme par exemples
Plage d'E/S 03F8 - 03FF
IRQ 04
je crois que ces valeurs sont les adresses du ports com 1
mais je n'arrive pas a y accéder !!
à ma connaissance, on ne peut pas accéder directement comme çà au port COM.
en fait, windows permet d'y accéder (presque) tout comme on accéderait à un fichier (OpenFile/WriteFile).
donc en passant par l'API Win32 :
Sinon, il y a toujours la librairie MVCOM de Marc Vitry (PB394 et PB40).
http://perso.orange.fr/marc.vitry/mvcom.htm
en fait, windows permet d'y accéder (presque) tout comme on accéderait à un fichier (OpenFile/WriteFile).
donc en passant par l'API Win32 :
Code : Tout sélectionner
; ComPort (RS232) example , Write and Read-data, timer driven
; good for a small terminal or a modem-configurator
; Windows only, done on january, 14th. 2004
; updated for PB4.x october 2006
; Copyright 2004/2006 Siegfried Rings (CodeGuru)
;
OnErrorGoto(?Errorhandling) ;Enable Errorhandling (enable Linenumbering!)
;User Structure for all the ComPort-Stuff
Structure structComport
Port.l
Inbuffersize.l
OutBuffersize.l
Handle.l
ct.COMMTIMEOUTS
dcb.DCB
Receivebuffer.l
ReceivebufferLength.l
EndStructure
Enumeration
#Gadget_TextSend
#Gadget_TextReceive
#Gadget_ButtonSend
#Gadget_ButtonReceive
EndEnumeration
#Win=1
;#ReceiveSendbuffer=1
#MaxReceiveBuffer=1024
Procedure.l SR_OpenComPort(*RS232.structComport)
*RS232\Handle =0
Device.s="COM"+Str(*RS232\Port)+":"
Result = CreateFile_(@Device, $C0000000, 0, 0, 3, 0, 0); create and open a existing device/file ;)
If Result = -1
MessageRequester("info", "Com Port " + Str(*RS232\Port) + " not available. Use Serial settings (on the main menu) To setup your ports.", 48)
ProcedureReturn 0
EndIf
If Result
*RS232\Handle=Result
mydcb.DCB
If GetCommState_(*RS232\Handle, @mydcb) ;First retrieve the Settings from ComPort
;Set Baudrate etc.
mydcb\Baudrate=*RS232\dcb\Baudrate ;Change the Settings to our needs
mydcb\Bytesize=*RS232\dcb\Bytesize
mydcb\Parity=*RS232\dcb\Parity
mydcb\StopBits=*RS232\dcb\StopBits
Result=SetCommState_(*RS232\Handle, @mydcb) ;and write them back to Comport
;Debug "SetCommState="+Str(result)
Result=SetCommTimeouts_(*RS232\Handle,*RS232\ct) ;set the Timeouts set longer for problems :)
;Debug "SetCommTimeouts="+Str(Result)
;Set In/Outbuffers
If result
Result=SetupComm_(*RS232\Handle,*RS232\Inbuffersize,*RS232\Outbuffersize)
EndIf
EndIf
Else
CloseHandle_(Result)
EndIf
ProcedureReturn *RS232\Handle
EndProcedure
Procedure SR_CloseComPort(*RS232.structComport)
If *RS232\Handle
CloseHandle_(*RS232\Handle)
*RS232\Handle=0
EndIf
EndProcedure
Procedure SR_WriteComPort(*RS232.structComport,Rawdata.l,RawDataLength.l)
If *RS232\Handle=0
ProcedureReturn
EndIf
Written.l
Result=WriteFile_(*RS232\Handle,RawData,RawDataLength,@Written,0) ;WriteData now to ComPort
FlushFileBuffers_(*RS232\Handle);Release buffer directly
ProcedureReturn written
EndProcedure
Procedure SR_ReadComPort(*RS232.structComport)
If *RS232\Handle=0
ProcedureReturn
EndIf
Repeat
Result=ReadFile_(*RS232\Handle , *RS232\Receivebuffer+Offset, 256, @RetBytes, 0) ;Read content
If RetBytes>0
Offset=Offset+RetBytes
EndIf
Until RetBytes=0 Or Offset>#MaxReceiveBuffer
*RS232\ReceivebufferLength=Offset
; FlushFileBuffers_(*RS232\Handle);Release buffer directly
ProcedureReturn Offset
EndProcedure
;- Begin of MainCode
MyRS232.structComport ;set my own Structure For all the ComPorthandling
MyRS232\Port=1
MyRS232\dcb\Baudrate=9600
MyRS232\dcb\Bytesize=8
MyRS232\dcb\StopBits=1 ;#ONESTOPBIT
MyRS232\dcb\Parity=#NOPARITY
MyRS232\Inbuffersize=256 ;
MyRS232\OutBuffersize=256
MyRS232\ct\ReadIntervalTimeOut =200; in milliseconds '#MAXDWORD
MyRS232\ct\ReadTotalTimeoutMultiplier = 1
MyRS232\ct\ReadTotalTimeoutConstant = 1
MyRS232\ct\WriteTotalTimeoutConstant = 10
MyRS232\ct\WriteTotalTimeoutMultiplier = 1
MyRS232\Receivebuffer=AllocateMemory(#MaxReceiveBuffer) ;Reserve mem For it
MyRS232\ReceivebufferLength=0
;- Open Window
hwnd=OpenWindow(#Win, 1, 300, 400, 400,"PureBasic SerialPortDemo Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
If hwnd
If CreateGadgetList(WindowID(#Win))
;- CreateGadgets
StringGadget(#Gadget_TextSend, 5, 5, 200, 20, "AT")
;StringGadget(#Gadget_TextReceive, 5, 55, 390, 340, "",#PB_String_Multiline )
EditorGadget(#Gadget_TextReceive,5, 55, 390, 340)
ButtonGadget(#Gadget_ButtonSend,210,5,90,20,"Send")
ButtonGadget(#Gadget_ButtonReceive,305,5,90,20,"Receive")
;- Setup Timer
Result=SetTimer_(hwnd,1,100,0) ;Setup our timer For receiveing Data every 100 msecs
;- Setup and Open Comport
Result=SR_OpenComPort(MyRS232)
;- Eventloop
Repeat
EventID.l = WaitWindowEvent()
;- Timer-Routine to read Data from ComPort
If EventID =#WM_TIMER
If MyRS232\Handle<>0
Readed=SR_ReadComPort(MyRS232)
If MyRS232\ReceiveBufferlength>0
Buffer.s=Buffer.s+PeekS(MyRS232\ReceiveBuffer,MyRS232\ReceiveBufferlength)
SetGadgetText(#Gadget_TextReceive,Buffer.s)
MyRS232\ReceiveBufferlength=0
EndIf
EndIf
EndIf
If EventID =#PB_Event_Gadget
GadgetNR = EventGadget()
;- Send Data to Comport
If GadgetNR =#Gadget_ButtonSend
SendText.s=GetGadgetText(#Gadget_TextSend) + Chr(13) ;add a CarriageReturn to send to modem
;Debug SendText
Buffer.s=""
SetGadgetText(#Gadget_TextReceive,Buffer.s);Reset inbuffer gadget
Result=SR_WriteComPort(MyRS232,@SendText.s,Len(SendText.s)); Check Modem
Debug "Characters sended:"+Str(Result)
EndIf
;- Read Data from Comport
If GadgetNR=#Gadget_ButtonReceive
Readed=SR_ReadComPort(MyRS232) ; Read Incoming
If Readed
Debug "Characters readed="+Str(Readed)
Buffer.s=Buffer.s+PeekS(MyRS232\ReceiveBuffer,MyRS232\ReceiveBufferlength)
SetGadgetText(#Gadget_TextReceive,Buffer.s)
MyRS232\ReceiveBufferlength=0 ;Shorten buffer now
EndIf
EndIf
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf
EndIf
SR_CloseComPort(MyRS232) ;Comport Close
End
;- Error-handler
Errorhandling:
MessageRequester("Error","in line "+Str(GetErrorLineNR() ),0)
End
http://perso.orange.fr/marc.vitry/mvcom.htm
Hyper classique! Mais quelquefois les pilotes existent mais c'est une cata. Là j'ai un scanner HP au boulot, l'interface twain a été codée avec les pieds! J'ai eu des scans il y a plus de 10 ans qui fonctionnaient mieux! Il y a un scan de diapos, non seulement ça bogue de partout (scan décalé par rapport au cadre défini, problèmes de résolution et de couleurs), mais c'est d'une lenteur, alors que la mécanique est hyper rapide. J'ai l'impression que c'est du .net en plus, franchement c'est pas une réussite.
J'espère que Photoshop ne passera pas à la moulinette .net.
J'espère que Photoshop ne passera pas à la moulinette .net.
çà m'étonnerait beaucoup à moins que .NET existe (ou existera) sous MacOS.djes a écrit :J'espère que Photoshop ne passera pas à la moulinette .net.
J'ai une infographiste en stage dans mon bureau ( pas de blague svp

Tout les postes de leur école (50aine de postes) sont sous Mac. L'allure générale de PhotoShop est la même sous Windows et Mac donc Adobe doit avoir sa propre bibliothèque d'interface graphique.
J'espère!Flype a écrit :çà m'étonnerait beaucoup à moins que .NET existe (ou existera) sous MacOS.djes a écrit :J'espère que Photoshop ne passera pas à la moulinette .net.
J'ai une infographiste en stage dans mon bureau ( pas de blague svp)
Tout les postes de leur école (50aine de postes) sont sous Mac. L'allure générale de PhotoShop est la même sous Windows et Mac donc Adobe doit avoir sa propre bibliothèque d'interface graphique.
Alors comme ça t'as une infographiste en stage????

non - plus une boite de SAV (matos electronique) mais depuis peu on a monté une cellule de comm parcequ'on grossit et on a besoin d'etre plus crédibles... alors la nouvelle infographiste a rejoint les vieux briscards dans le bureau des informaticiens dont je fais parti (dev) avec mon collegue (admin).
et moi je passe mon temps à lui montrer comment faire si ou çà sous windows parceque sous Mac tout est apparemment plus simple, à écouter la demoiselle...
et moi je passe mon temps à lui montrer comment faire si ou çà sous windows parceque sous Mac tout est apparemment plus simple, à écouter la demoiselle...