Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Comportar......

Postades av 2001-02-12 22:27:00 - Peter Larsson, i forum visual basic - allmänt, Tråden har 5 Kommentarer och lästs av 709 personer

Nån som vet nått referens ställe där man kan läsa om hur man kommuniserar med com porten??


Svara

Sv: Comportar......

Postades av 2001-02-13 22:14:00 - Peter Holm

tja om du vill skriva VB-program som snackar RS232 så duger VB-hjälpen rätt bra.......

Det svåra är inte att snacka ut på porten det sköter MSCOMM-komponenten åt dig. Krånglet är i regel att du ibland måste följa vissa protokoll. Exempel på protokoll kan vara CANbus, PROFIBUS, MODBUS eller något annat protokoll..

I mitt jobb händer det ofta att jag måste koda en komponent som kan snacka med andra instrument på ett RS485 nätverk, ungefär lika som ett RS232 fast det är ett multidrop och det är andra signalnivåer, varför man använder en RS232 till RS485 konverter.

Nåja här kommer lite kort info hur du enklast bygger en kommunikationsrutin exvis för att avlyssna komporten..

Förrsten man kan använda två olika metoder i huvudsak. Polling eller eventstyrt. Vid Polling frågar man med jämna mellanrum porten om det kommit data. I det andra fallet (som är det bästa, oftast) låtar man ett event triggas av att data kommer till porten. Då kan man syssla med annat tills det finns data att hämta. (Nästan som interrupt alltså)

Säkerställ att du anger porten som ditt modem sitter på.
============================================

1. Högerklicka i toolboxen och lägg till komponenten Microsoft Comm Control 6.0
2. Drag in denna komponenten i en form.
3. Lägg en Commandbutton på formen också.
4. En timer lägger du också dit
5. klistra in koden nedan.


Option Explicit

Private Sub Command1_Click()
Static p As Boolean
p = True - p 'Toggla värdet på p för varje tryck
If p Then
Command1.Caption = "Stäng COM" & MSComm1.CommPort
'Kolla så att inte porten är öppen av någon annan applikation
'Är den inte det så öppna den.
If Not MSComm1.PortOpen = True Then MSComm1.PortOpen = True
'Starta timer
Timer1.Enabled = True
Else
Command1.Caption = "Lyssna COM" & MSComm1.CommPort
MSComm1.PortOpen = False
'Stoppa timer
Timer1.Enabled = False
End If
End Sub

Private Sub Form_Load()
'Ställ in parametrar för COM-porten
'9600 baud, andra giltiga värden: 110,300,600,1200,2400
'9600 (Default),14400,19200,28800,38400,56000,128000,256000
'N = No Parity (ingen paritetsbit) Kan vara E = Even, M = Mark
'N = Ingen, O = Udda, S = Space
'8 databitar, kan vara 4,5,6,7 eller 8, 8 är absolut vanligast
'men 7 förekommer ofta i olika fältbuss sammanhang
'1 stoppbit, kan vara 1,1.5 eller 2 1 är default
MSComm1.Settings = "9600,N,8,1" 'Defaultinställning
'Tala om vilken port du vill lyssna på
'1 = COM1
'2 = COM2
MSComm1.CommPort = 2
'Ange inbuffertens storlek... 1024 är default, blir den full
'Går information förlorad
MSComm1.InBufferSize = 1024
'När antalet tecken i inbufferten är lika med eller
'fler än vad som anges för egenskapen RThreashold
'triggas eventet onComm och man kan hämta datat.
'Det finns många flera saker som kan trigga detta event.
'Vad som triggat det kan man utläsa i egenskapen MSComm1.CommEvent
MSComm1.RThreshold = 256
'Nu är väl alla egentliga inställningar gjorda.
'En del applikationer kräver handskakning och sånt
'Men nu skall vi bara lyssna så det går bra utan.
Command1.Caption = "Lyssna COM" & MSComm1.CommPort
'Sätt timern. Vid varje timer_event skickas en fråga till modemet
'Denna teknik används bara för att man inte kan skicka hela
'klabbet av frågor direkt... Modemet hinner inte med...
Timer1.Interval = 100 '0.5 sekunder (500 ms)
Timer1.Enabled = False
End Sub

Private Sub MSComm1_OnComm()
'Detta event triggas bland annat av att det fins ett visst
'Antal tecken på commporten. Nämligen RThreashold stycken
Dim dataRad() As String
Dim commPortsData As String
Dim str As String
Dim i As Integer
'Kolla om det är data på porten som utlöst eventet
'Det kan vara ett kommunikationsfel också.
If MSComm1.CommEvent = comEvReceive Then
'Läs data från porten
commPortsData = MSComm1.Input
'Splitta datat i en array, trix för att få bort vbrlf
dataRad() = Split(commPortsData, vbCrLf & vbCrLf, -1, vbTextCompare)
'Skriv ut datat.... i debugfönstret
For i = 0 To UBound(dataRad())
Debug.Print "dataRad(" & CStr(i) & ") = "; dataRad(i)
Next i
Else
MsgBox "Event utlöst av annat än att RThreashold st tecken finns in inbufferten'"
End If
End Sub

Private Sub Timer1_Timer()
'Denna kod finns bara till för att generera lite snack på COM-porten
'Den avfrågar modemet om lite olika parametrar
'Skicka lite hayes-kommandon till modemet så vi får svar. se länk nedan
'http://pvhwsdte.ped.hisingensvux.educ.goteborg.se/martinf/hayes.html
Static i As Integer
'Bygg och skicka frågesträngen till modemet
MSComm1.Output = "ATS" & CStr(i) & "?" & vbCrLf
i = i + 1
'S11 är det högsta registret
If i = 12 Then i = 0
End Sub


=============================================

Lycka till

/peterh <=> hpeter


Svara

Sv: Comportar......

Postades av 2001-02-13 23:15:00 - Andreas Hillqvist

Spännande att råka ut för en annan lösning...
Själv har jag använt "p = Not p".

Inte för att hastigheten på just denna operation påverkan är något som behövs optimeras.

Här är testet jag utförde:

Private Sub Form_Load()
Dim Value As Boolean
Dim Index As Long
Dim StartTime As Single
StartTime = Timer
For Index = 1 To 100000
Value = True - Value
Value = True - Value
Value = True - Value
Value = True - Value
Value = True - Value
Next
Debug.Print "True: "; Timer - StartTime

StartTime = Timer
For Index = 1 To 100000
Value = Not Value
Value = Not Value
Value = Not Value
Value = Not Value
Value = Not Value
Next
Debug.Print "Not: "; Timer - StartTime

StartTime = Timer
For Index = 1 To 100000
Value = True - Value
Value = True - Value
Value = True - Value
Value = True - Value
Value = True - Value
Next
Debug.Print "True: "; Timer - StartTime

StartTime = Timer
For Index = 1 To 100000
Value = Not Value
Value = Not Value
Value = Not Value
Value = Not Value
Value = Not Value
Next
Debug.Print "Not: "; Timer - StartTime

StartTime = Timer
For Index = 1 To 100000
Value = True - Value
Value = True - Value
Value = True - Value
Value = True - Value
Value = True - Value
Next
Debug.Print "True: "; Timer - StartTime

StartTime = Timer
For Index = 1 To 100000
Value = Not Value
Value = Not Value
Value = Not Value
Value = Not Value
Value = Not Value
Next
Debug.Print "Not: "; Timer - StartTime

End Sub


Svara

Sv: Comportar......

Postades av 2001-02-14 00:16:00 - Peter Holm

Eller varför inte testa dessa:
Kravet är att första toggeln måste ge 1 därefter måste den toggla mellan 0 och 1 alternativt att första är true och den pendlar mellan true och false.

p = 1 - p 'Standard
p = (Not p) + 2
p = (p Imp Not p) + 2 'Intressant med logisk implikation
p = Abs(p - 1)
p = (p Imp False) + 2
p = True - p + 2
p = 1 Xor p
p = (0 Eqv p) + 2 'Logisk ekvivalens
p = (p + 1) Mod 2
p = ((p + 1) And (p - 1))


Kommer du på flera ??

/peterh <=> hpeter


Svara

Sv: Comportar......

Postades av 2001-02-14 10:14:00 - Andreas Hillqvist

Jag nöjer mig med "not".
Jag hade för mig att True var -1. Har jag fel?


Svara

Sv: Comportar......

Postades av 2001-02-14 11:06:00 - Peter Holm

Förmodligen just därför som jag adderar 2 till vissa uttryck -1+2 = 1, grundregeln var toggla mellan 0 och ett, bara för att begränsa sig lite....

Annars finns det så många sätt att göra det på.

/peterh


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 616
27 953
271 709
5 529
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies