/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
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
>
>



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste