|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Porta COM e Visual Basic
Vorrei realizzare un semplice circuito costituito da una batteria ed una lampadina da 5 volt . Vorrei aprire e chiudere il circuito per mezzo di una porta com . In visual basic so che esiste l'oggetto COM , ma come aprire e chiudere il circuito . Mi spieghereste ?
|
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Feb 2002
Città: MI Prov. [Nord-Est] Auto: HONDA Civic 8th gen. 2.2 I-CDTI Executive I-Pilot Moto: HONDA Hornet ABS
Messaggi: 4339
|
Se hai la parallela libera ti cosiglio di utilizzare quella anzichè la COM
![]()
__________________
Perito in Elettronica e Telecomunicazioni | Microsoft Certified Professional su Windows Server 2003 | Membro del Mensa Italia |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Quote:
|
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Feb 2002
Città: MI Prov. [Nord-Est] Auto: HONDA Civic 8th gen. 2.2 I-CDTI Executive I-Pilot Moto: HONDA Hornet ABS
Messaggi: 4339
|
Con la porta parallela ti basta collegare un pin corrispondente a un uscita a un transistor collegato alla tua lampadina (a grandi linee).
Da VB la gestione della parallela non è un problema, magari domani ti dico come si fa. Con la seriale è invece più complessa la faccenda perche il segnale che esce è conpreso tra +12V e -12V e il dato che esce è ovviamente di tipo seriale, quindi non puoi mantenerlo su un livello fisso, ti servirebbe comunque in convertitore SIPO (seriale/parallelo), o comunque un circuito particolare.
__________________
Perito in Elettronica e Telecomunicazioni | Microsoft Certified Professional su Windows Server 2003 | Membro del Mensa Italia |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Mi dici come si fà ?
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Feb 2002
Città: MI Prov. [Nord-Est] Auto: HONDA Civic 8th gen. 2.2 I-CDTI Executive I-Pilot Moto: HONDA Hornet ABS
Messaggi: 4339
|
Comincia dando un'occhiata QUA.
__________________
Perito in Elettronica e Telecomunicazioni | Microsoft Certified Professional su Windows Server 2003 | Membro del Mensa Italia |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
OK , poi ?
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Feb 2002
Città: MI Prov. [Nord-Est] Auto: HONDA Civic 8th gen. 2.2 I-CDTI Executive I-Pilot Moto: HONDA Hornet ABS
Messaggi: 4339
|
Praticamente per controllare la porta basta dare il comando
OUT address, data Devi sapere l'indirizzo della parallela, hai la scelta tra 3 indirizzi (prova a fare una ricerca in rete, ma dovresti riuscire a leggerlo anche dalle proprietà della porta parallela da Gestione Periferiche), comunque generalmente è H378. Col comando "out &h378, 25" tu metti sui pin di uscita della parallela il numero 25, che in binario è "11001". Vuol dire che i pin 0, 3 e 4 avranno 5V mentre gli altri saranno a 0. Visto che a te serve comandare un pin solo puoi mettere sulla porta il valore 0 per spegnere e 1 per accendere: out &h378, 0 out &h378, 1 In questo caso il pin che cambia tensione è il D0 (vedi immagine del documeto). Però non puoi collegare direttamente il pin alla lampadina, perchè anche se ci sono 5V non esce sufficiente corrente e rischieresti inoltre di danneggiare la parallela. Per questo devi usare un piccolo e semplicissimo circuito con un transistor.
__________________
Perito in Elettronica e Telecomunicazioni | Microsoft Certified Professional su Windows Server 2003 | Membro del Mensa Italia |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Fin qui tutto chiaro .... Dovrei allora costruire un circuito con transistor BJT facendolo funzionare nella zona attiva giusto ? In pratica dovrei realizzare un amplificatore per piccoli segnali ? Saresti così cortese da disegnarmi questo circuito con il modello di transistor , valore delle resistenze ecc... . Ti sarei molto grato
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Feb 2002
Città: MI Prov. [Nord-Est] Auto: HONDA Civic 8th gen. 2.2 I-CDTI Executive I-Pilot Moto: HONDA Hornet ABS
Messaggi: 4339
|
Per l'indirizzo della porta:
![]() Il circuito potrebbe essere così: ![]() Nel circuito ci sono altre cose che non c'entrano, a noi interessa il tansistor in basso (bc547) col suo resistore da 3,3k (va bene anche da 4,7K, forse meglio), il grosso cerchio (che è la tua lampadina) e il generatore (la batteria), cioè quello in basso a destra. Il resto escludilo. Inoltre il resistore si deve collegare, come detto prima, al pin D0, che sarebbe il numero 2. In questo schema invece è sul 9.
__________________
Perito in Elettronica e Telecomunicazioni | Microsoft Certified Professional su Windows Server 2003 | Membro del Mensa Italia |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Un 'altra cosa : ma oltre a 25 , posso anche riportare in uscita una lettera facendo riferimento al codice ascii ?
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Feb 2002
Città: MI Prov. [Nord-Est] Auto: HONDA Civic 8th gen. 2.2 I-CDTI Executive I-Pilot Moto: HONDA Hornet ABS
Messaggi: 4339
|
Sì, VB accetta anche numeri esadecimali (come quello dell'indirizzo della porta), basta che gil metti davanti &H
Per esempio puoi dare il comando: out &h378, &HFF per mettere tutti e gli 8 bit a 1.
__________________
Perito in Elettronica e Telecomunicazioni | Microsoft Certified Professional su Windows Server 2003 | Membro del Mensa Italia |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Senti , ma con Visual Basic .NET l'istruzione OUT non mi funziona . Che dici installo il 6.0 ?
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Feb 2002
Città: MI Prov. [Nord-Est] Auto: HONDA Civic 8th gen. 2.2 I-CDTI Executive I-Pilot Moto: HONDA Hornet ABS
Messaggi: 4339
|
Io mi trovo bene col 6.0 e non ho mai utilizzato il .NET.
Comunque se fai una ricerca trovi anche delle DLL o delle OCX che puoi aggiungere al progetto che ti permettono di controllare la porta parallela. In rilievo trovi dei link molto interessanti. Eccotene uno: http://www.planet-source-code.com/
__________________
Perito in Elettronica e Telecomunicazioni | Microsoft Certified Professional su Windows Server 2003 | Membro del Mensa Italia |
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Ma la VCC quanto deve essere ? E prima di alimentare il transistor , non dovrei collegare qualche resistenza ?
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Riecco che appare la CreateFile
![]() Puoi Aprire la porta LPT1 con la CreateFile e scriverci con la WriteFile : Codice:
HANDLE hFile; char pOut[]="ciao"; DWORD number; hFile=CreateFile("LPT1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, NULL, NULL); if(hFile==INVALID_HANDLE_VALUE) errore("Invalid LPT or LPT1 is not open"); else { if(!WriteFile(hFile,pOut,strlen(pOut),&number,NULL)) errore("Fail to send data."); } CloseHandle(hFile); |
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Quote:
|
|
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Se io ad esempio voglio attivare la funzione che hai postato al click del mouse su di un pulsante come devo fare ?
|
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Codice:
Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As OVERLAPPED) As Long Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As OVERLAPPED) As Long Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Public Const GENERIC_READ = &H80000000 Public Const GENERIC_WRITE = &H40000000 Public Const OPEN_EXISTING = 3 Public Const FILE_FLAG_OVERLAPPED = &H40000000 '******************** Type OVERLAPPED Internal As Long InternalHigh As Long offset As Long OffsetHigh As Long hEvent As Long End Type Codice:
Dim hFile As Long Dim ret As Long Dim number As Long number = 0 hFile=CreateFile("LPT1", GENERIC_READ Or GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0) If hFile <> INVALID_HANDLE_VALUE Then ret = WriteFile(hFile, "Ciao", 4, number, 0) CloseHandle(hFile) End If |
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Non ci capisco niente !!!!!!!!!!! Che cosa sono tutte quelle funzioni !!!!! VB su questo lato è veramente molto , ma molto più semplice .
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:35.