|
| Fil manipulering (åbning) Fra : Lasse Madsen |
Dato : 02-10-02 14:11 |
|
Hej alle sammen.
Jeg har brug for at sende en tekst fil over seriel porten via den
indebyggede "MScomm OCX". I min tekst fil står der:
Hej med dig.
Problemet opstår fordi jeg vil åbne denne tekst fil med "commondialog OCX"
og indsætte en pause mellem hver karakter jeg sender således at det bliver
sendt sådan (feks)
H
pause
e
pause
j
pause
....
Pausen skal være 1milisekundt (0,001sek) men hvordan hulen kan jeg åbne
filen og indsætte denne pause mellem hver karakter i hele filen ? ? ? måske
hvis man kunne læse en karakter i tekst filen ud ad gangen, vente 10mS, og
så spytte den ud men kan man det ????
M.v.h.
L. Madsen
| |
John Doe (02-10-2002)
| Kommentar Fra : John Doe |
Dato : 02-10-02 17:43 |
|
Opret nyt projekt med to knapper:
cmdContents og cmdSendCharacters
En timer: "timSend"
CommonDialog: "CommonDialog1"
Det er i timer-eventen, at der sendes karakterer.
Paste flg. kode:
'=======================================================
Option Explicit
Private sFileContents As String
Private Sub cmdGetContents_Click()
On Error GoTo Err_cmdGetContents_Click
Dim sFileName As String
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
CommonDialog1.ShowOpen
sFileName = CommonDialog1.FileName
sFileContents = fso.OpenTextFile(sFileName).ReadAll()
Exit Sub
Err_cmdGetContents_Click:
End Sub
Private Sub cmdSendCharacters_Click()
'Hvis det skal være mere præcist end
'denne timers ene milisekund - skal du benytte API-kald
timSend.Interval = 1 'eet milisekund
timSend.Enabled = True
End Sub
Private Sub Form_Load()
On Error GoTo Err_Handler_Form_Load
CommonDialog1.CancelError = True
Exit Sub
Err_Handler_Form_Load:
End Sub
Private Sub timSend_Timer()
Static iCount As Integer
'Her sender du
Debug.Print Mid(sFileContents, iCount + 1, 1)
iCount = iCount + 1
On Error Resume Next
If Asc(Mid(sFileContents, iCount + 1, 1)) = 0 Then
timSend.Enabled = False
End If
If Err = 5 Then
iCount = 0
timSend.Enabled = False
End If
On Error GoTo 0
End Sub
'=======================================================
mvh/Robert
| |
Lasse Madsen (03-10-2002)
| Kommentar Fra : Lasse Madsen |
Dato : 03-10-02 10:23 |
|
Hej robert !
Tusinde tak det var lige hvad jeg manglede ! ! !
ved du forresten hvordan jeg kan finde ud af hvor mange karaktere der er i
tekst filen så jeg kan bruge det tal som en progressbar.max værdi
"John Doe" <john@doe.com> wrote in message
news:anf7m8$dhg$1@news.net.uni-c.dk...
> Opret nyt projekt med to knapper:
>
> cmdContents og cmdSendCharacters
>
> En timer: "timSend"
>
> CommonDialog: "CommonDialog1"
>
>
> Det er i timer-eventen, at der sendes karakterer.
>
> Paste flg. kode:
>
> '=======================================================
>
> Option Explicit
>
> Private sFileContents As String
>
>
> Private Sub cmdGetContents_Click()
>
> On Error GoTo Err_cmdGetContents_Click
> Dim sFileName As String
> Dim fso As Object
> Set fso = CreateObject("Scripting.FileSystemObject")
>
> CommonDialog1.ShowOpen
> sFileName = CommonDialog1.FileName
>
> sFileContents = fso.OpenTextFile(sFileName).ReadAll()
>
> Exit Sub
>
> Err_cmdGetContents_Click:
>
> End Sub
>
> Private Sub cmdSendCharacters_Click()
> 'Hvis det skal være mere præcist end
> 'denne timers ene milisekund - skal du benytte API-kald
> timSend.Interval = 1 'eet milisekund
> timSend.Enabled = True
>
> End Sub
>
> Private Sub Form_Load()
> On Error GoTo Err_Handler_Form_Load
> CommonDialog1.CancelError = True
>
> Exit Sub
>
> Err_Handler_Form_Load:
> End Sub
>
> Private Sub timSend_Timer()
> Static iCount As Integer
>
> 'Her sender du
> Debug.Print Mid(sFileContents, iCount + 1, 1)
> iCount = iCount + 1
>
> On Error Resume Next
>
> If Asc(Mid(sFileContents, iCount + 1, 1)) = 0 Then
> timSend.Enabled = False
> End If
>
> If Err = 5 Then
> iCount = 0
> timSend.Enabled = False
> End If
>
> On Error GoTo 0
>
> End Sub
>
> '=======================================================
>
> mvh/Robert
>
>
| |
Lasse Madsen (03-10-2002)
| Kommentar Fra : Lasse Madsen |
Dato : 03-10-02 11:04 |
|
Jeg har opdaget LOF kommandoen
ellers MANGE TAK !
Du er en gud :)
"Lasse Madsen" <lasse.madsen@elektronik.dk> wrote in message
news:3d9c0cdb$0$52213$edfadb0f@dspool01.news.tele.dk...
> Hej robert !
>
> Tusinde tak det var lige hvad jeg manglede ! ! !
>
> ved du forresten hvordan jeg kan finde ud af hvor mange karaktere der er i
> tekst filen så jeg kan bruge det tal som en progressbar.max værdi
>
>
>
> "John Doe" <john@doe.com> wrote in message
> news:anf7m8$dhg$1@news.net.uni-c.dk...
> > Opret nyt projekt med to knapper:
> >
> > cmdContents og cmdSendCharacters
> >
> > En timer: "timSend"
> >
> > CommonDialog: "CommonDialog1"
> >
> >
> > Det er i timer-eventen, at der sendes karakterer.
> >
> > Paste flg. kode:
> >
> > '=======================================================
> >
> > Option Explicit
> >
> > Private sFileContents As String
> >
> >
> > Private Sub cmdGetContents_Click()
> >
> > On Error GoTo Err_cmdGetContents_Click
> > Dim sFileName As String
> > Dim fso As Object
> > Set fso = CreateObject("Scripting.FileSystemObject")
> >
> > CommonDialog1.ShowOpen
> > sFileName = CommonDialog1.FileName
> >
> > sFileContents = fso.OpenTextFile(sFileName).ReadAll()
> >
> > Exit Sub
> >
> > Err_cmdGetContents_Click:
> >
> > End Sub
> >
> > Private Sub cmdSendCharacters_Click()
> > 'Hvis det skal være mere præcist end
> > 'denne timers ene milisekund - skal du benytte API-kald
> > timSend.Interval = 1 'eet milisekund
> > timSend.Enabled = True
> >
> > End Sub
> >
> > Private Sub Form_Load()
> > On Error GoTo Err_Handler_Form_Load
> > CommonDialog1.CancelError = True
> >
> > Exit Sub
> >
> > Err_Handler_Form_Load:
> > End Sub
> >
> > Private Sub timSend_Timer()
> > Static iCount As Integer
> >
> > 'Her sender du
> > Debug.Print Mid(sFileContents, iCount + 1, 1)
> > iCount = iCount + 1
> >
> > On Error Resume Next
> >
> > If Asc(Mid(sFileContents, iCount + 1, 1)) = 0 Then
> > timSend.Enabled = False
> > End If
> >
> > If Err = 5 Then
> > iCount = 0
> > timSend.Enabled = False
> > End If
> >
> > On Error GoTo 0
> >
> > End Sub
> >
> > '=======================================================
> >
> > mvh/Robert
> >
> >
>
>
| |
John Doe (03-10-2002)
| Kommentar Fra : John Doe |
Dato : 03-10-02 12:34 |
|
> > ved du forresten hvordan jeg kan finde ud af hvor mange karaktere der er
i
> > tekst filen så jeg kan bruge det tal som en progressbar.max værdi
Det var meget bevidst, at filens indhold læses ind i en variabel for at
formindske den tid - som filen er åben i.
Derfor: længden af indholdet af filen == længden af variabel tekststrengen:
len( sFileContents )
Robert
| |
Carsten Jessen (02-10-2002)
| Kommentar Fra : Carsten Jessen |
Dato : 02-10-02 19:52 |
|
Hej Lasse
Kan du ikke læse hele tekst filen ind i en "string" variabel og derefter
sende en karakter af gangen ved at bruge Left kommandoen.
Mvh Carsten
"Lasse Madsen" <lasse.madsen@elektronik.dk> wrote in message
news:3d9af09b$0$69053$edfadb0f@dspool01.news.tele.dk...
> Hej alle sammen.
>
> Jeg har brug for at sende en tekst fil over seriel porten via den
> indebyggede "MScomm OCX". I min tekst fil står der:
>
> Hej med dig.
>
> Problemet opstår fordi jeg vil åbne denne tekst fil med "commondialog OCX"
> og indsætte en pause mellem hver karakter jeg sender således at det bliver
> sendt sådan (feks)
>
> H
> pause
> e
> pause
> j
> pause
> ...
>
> Pausen skal være 1milisekundt (0,001sek) men hvordan hulen kan jeg åbne
> filen og indsætte denne pause mellem hver karakter i hele filen ? ? ?
måske
> hvis man kunne læse en karakter i tekst filen ud ad gangen, vente 10mS, og
> så spytte den ud men kan man det ????
>
> M.v.h.
> L. Madsen
>
>
| |
|
|