VB és a net

MS Visual Basic, Visual Basic Application (Excel, Word...) tippek-trükkök, programozások.
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

Hozzászólás Szerző: szovhoz »

nagyon érdekes amit csináltál szívesen meg nézném de sajna nem hozza be se firefox se ie!!
Avatar
inas
Újonc
Újonc
Hozzászólások: 9
Csatlakozott: 2008. szeptember 27. szombat, 6:00

Ismeretlen szerzőről

Hozzászólás Szerző: inas »

"Az IC-k füsttel működnek. Ha kijön belőlük a füst, nem működnek tovább." - ismeretlen szerző


Aki, ezt összehozta, maradandót alkotott!
Avatar
nobody_hun
Bitfaragó
Hozzászólások: 425
Csatlakozott: 2005. november 14. hétfő, 7:00

Hozzászólás Szerző: nobody_hun »

Tegnap hűtésgondokkal küzdöttem (elkezdett zörögni az egyik venti) azért nem ment.

Ma már ismét üzemel.

Ja és a menüproblémák is ki lettek javítva. :)
"Az IC-k füsttel működnek. Ha kijön belőlük a füst, nem működnek tovább." - ismeretlen szerző
"Az ID:FFFFFF egyenlő az Atmel még nem kiadott processzorával."
Avatar
Sanci
Bitmanipulátor
Hozzászólások: 107
Csatlakozott: 2008. március 14. péntek, 6:00

VB net 2008

Hozzászólás Szerző: Sanci »

Szervusztok!

Elkezdtem foglalkozni a VB net 2008 -al.
Gondoltam kipróbálom a soros portot, de nem sikerült.
A szálkezelés kifogott rajtam.

Kód:
Public Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
TextBox1.Text = TextBox1.Text & SerialPort1.ReadChar
End Sub


Ezt a hibaüzenetet kapom: A szálak közötti művelet érvénytelen: Megpróbáltak hozzáférni a(z) „TextBox1” vezérlőhöz egy olyan szálból, amely nem egyezik a vezérlőt létrehozó szállal.

Ez nekem új.
Van valakinek tapasztalata ez ügyben?
Avatar
herc1234
Bitfaragó
Hozzászólások: 459
Csatlakozott: 2007. február 9. péntek, 7:00

Hozzászólás Szerző: herc1234 »

Hát ezt nem igy szokás.
Meg kell nyitni a portot beállítani a biteket pl 8.n.1 stb
bár a linkben ilyen nincs
ezt nézd meg:
http://support.microsoft.com/kb/823179

vagy esetleg kész osztályt letölthetsz és azt beemeled
és használod kevesebbet kell írni pl ezt:
http://www.codeworks.it/net/VBNetRs232.htm

amúgy meg szerintem érdemes letölteni a 2010-et
ott már azért sokkal jobban el van ez rendezve másrészt
meg érdemes átszokni a c#-ra.
vb-ben sokminent nem lehet megcsinálni és c# ben meg
sokkal több help áll rendelkezésre.
Gondlok itt a 3.5 framework könyvre amit ha keresgélsz
google-ban biztos megtalálod valamilyen pdf formában.
2 kötet kb 1600 oldal magyarul.a-z ig.
Én is Vb-be próbálkoztam egy darabig de rájöttem hogy a c#
sokkal jobb.

Különben meg valahogy igy kéne szerintem ezt:
Textbox1.Text = string(SerialPort1.ReadChar)
legalábbis castot kéne csinálni.
azt hogy vb ben hogyiskell már nem nagyon emlékszem
de az is lehet hogy elöször igy:
Dim Rsbuffer As string
Rsbuffer = string(SerialPort1.ReadChar)
Textbox1.Test = Rsbuffer
pl

Kód: Egész kijelölése

Imports System
  Imports System.IO.Ports
  Imports System.Threading
  
  Public Class PortChat
      Shared _continue As Boolean
      Shared _serialPort As SerialPort
  
      Public Shared Sub Main()
          Dim name As String
          Dim message As String
          Dim sComparer As StringComparer = StringComparer.OrdinalIgnoreCase
          Dim readThread As Thread = New Thread(AddressOf Read)
  
          ' Create a new SerialPort object with default settings.
          _serialPort = New SerialPort()
  
          ' Allow the user to set the appropriate properties.
          _serialPort.PortName = SetPortName(_serialPort.PortName)
          _serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate)
          _serialPort.Parity = SetPortParity(_serialPort.Parity)
          _serialPort.DataBits = SetPortDataBits(_serialPort.DataBits)
          _serialPort.StopBits = SetPortStopBits(_serialPort.StopBits)
          _serialPort.Handshake = SetPortHandshake(_serialPort.Handshake)
  
          ' Set the read/write timeouts
          _serialPort.ReadTimeout = 500
          _serialPort.WriteTimeout = 500
  
          _serialPort.Open()
          _continue = True
          readThread.Start()
  
          Console.Write("Name: ")
          name = Console.ReadLine()
  
          Console.WriteLine("Type QUIT to exit")
  
          While (_continue)
              message = Console.ReadLine()
  
              If sComparer.Equals("quit", message) Then
                  _continue = False
              Else
                  _serialPort.WriteLine( _
                      String.Format("<{0}>: {1}", name, message))
              End If
          end while
  
          readThread.Join()
          _serialPort.Close()
      End Sub
  
      Public Shared Sub Read()
          While (_continue)
              Try
                  Dim message As String = _serialPort.ReadLine()
                  Console.WriteLine(message)
              Catch ex As TimeoutException
                  ' Do nothing
              End Try
          End While
      End Sub
  
      Public Shared Function SetPortName(ByVal defaultPortName As String) As String
          Dim newPortName As String
  
          Console.WriteLine("Available Ports:")
          Dim s As String
          For Each s In SerialPort.GetPortNames()
              Console.WriteLine("   {0}", s)
          Next s
  
          Console.Write("COM port({0}): ", defaultPortName)
          newPortName = Console.ReadLine()
  
          If newPortName = "" Then
              newPortName = defaultPortName
          End If
          Return newPortName
      End Function
  
      Public Shared Function SetPortBaudRate(ByVal defaultPortBaudRate As Integer) As Integer
          Dim newBaudRate As String
  
          Console.Write("Baud Rate({0}): ", defaultPortBaudRate)
          newBaudRate = Console.ReadLine()
  
          If newBaudRate = "" Then
              newBaudRate = defaultPortBaudRate.ToString()
          End If
  
          Return Integer.Parse(newBaudRate)
      End Function
  
      Public Shared Function SetPortParity(ByVal defaultPortParity As Parity) As Parity
          Dim newParity As String
  
          Console.WriteLine("Available Parity options:")
          Dim s As String
          For Each s In [Enum].GetNames(GetType(Parity))
              Console.WriteLine("   {0}", s)
          Next s
  
          Console.Write("Parity({0}):", defaultPortParity.ToString())
          newparity = Console.ReadLine()
  
          If newparity = "" Then
              newparity = defaultPortParity.ToString()
          End If
  
          Return CType([Enum].Parse(GetType(Parity), newParity), Parity)
      End Function
  
      Public Shared Function SetPortDataBits(ByVal defaultPortDataBits As Integer) As Integer
          Dim newDataBits As String
  
          Console.Write("Data Bits({0}): ", defaultPortDataBits)
          newDataBits = Console.ReadLine()
  
          If newDataBits = "" Then
              newDataBits = defaultPortDataBits.ToString()
          End If
  
          Return Integer.Parse(newDataBits)
      End Function
  
      Public Shared Function SetPortStopBits(ByVal defaultPortStopBits As StopBits) As StopBits
          Dim newStopBits As String
  
          Console.WriteLine("Available Stop Bits options:")
          Dim s As String
          For Each s In [Enum].GetNames(GetType(StopBits))
              Console.WriteLine("   {0}", s)
          Next s
  
          Console.Write("Stop Bits({0}):", defaultPortStopBits.ToString())
          newStopBits = Console.ReadLine()
  
          If newStopBits = "" Then
              newStopBits = defaultPortStopBits.ToString()
          End If
  
          Return CType([Enum].Parse(GetType(StopBits), newStopBits), StopBits)
      End Function
  
      Public Shared Function SetPortHandshake(ByVal defaultPortHandshake As Handshake) As Handshake
          Dim newHandshake As String
  
          Console.WriteLine("Available Handshake options:")
          Dim s As String
          For Each s In [Enum].GetNames(GetType(Handshake))
              Console.WriteLine("   {0}", s)
          Next s
  
          Console.Write("Stop Bits({0}):", defaultPortHandshake.ToString())
          newHandshake = Console.ReadLine()
  
          If newHandshake = "" Then
              newHandshake = defaultPortHandshake.ToString()
          End If
  
          Return CType([Enum].Parse(GetType(Handshake), newHandshake), Handshake)
      End Function
  End Class
a komplett meg valahogy igy néz ki
Avatar
Sanci
Bitmanipulátor
Hozzászólások: 107
Csatlakozott: 2008. március 14. péntek, 6:00

Hozzászólás Szerző: Sanci »

Köszönöm, megnézem!

VB6-ban már készítettem pár egyszerű programot, de ez a VB-net soros port kifogott rajtam. Már minden favágós módszert kipróbáltam rajta.
Meg van a 2010 is. Megpróbálom hátha...
Bár igazad van a C# -vel kapcsolatban. Megpróbálom azt is.
Avatar
Sanci
Bitmanipulátor
Hozzászólások: 107
Csatlakozott: 2008. március 14. péntek, 6:00

Hozzászólás Szerző: Sanci »

VB Net 2010 megoldotta a problémát.

Kód: Egész kijelölése

'Serial Port Interfacing with VB.net 2010 Express Edition
'Copyright (C) 2010  Richard Myrick T. Arellaga
'
'This program is free software: you can redistribute it and/or modify
'it under the terms of the GNU General Public License as published by
'the Free Software Foundation, either version 3 of the License, or
'(at your option) any later version.
'
'This program is distributed in the hope that it will be useful,
'but WITHOUT ANY WARRANTY; without even the implied warranty of
'MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
'GNU General Public License for more details.
'
' You should have received a copy of the GNU General Public License
' along with this program.  If not, see <http://www.gnu.org/licenses/>.


Imports System
Imports System.ComponentModel
Imports System.Threading
Imports System.IO.Ports
Public Class frmMain
    Dim myPort As Array  'COM Ports detected on the system will be stored here
    Delegate Sub SetTextCallback(ByVal [text] As String) 'Added to prevent threading errors during receiveing of data

    Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'When our form loads, auto detect all serial ports in the system and populate the cmbPort Combo box.
        myPort = IO.Ports.SerialPort.GetPortNames() 'Get all com ports available
        cmbBaud.Items.Add(9600)     'Populate the cmbBaud Combo box to common baud rates used   
        cmbBaud.Items.Add(19200)
        cmbBaud.Items.Add(38400)
        cmbBaud.Items.Add(57600)
        cmbBaud.Items.Add(115200)

        For i = 0 To UBound(myPort)
            cmbPort.Items.Add(myPort(i))
        Next
        cmbPort.Text = cmbPort.Items.Item(0)    'Set cmbPort text to the first COM port detected
        cmbBaud.Text = cmbBaud.Items.Item(0)    'Set cmbBaud text to the first Baud rate on the list

        btnDisconnect.Enabled = False           'Initially Disconnect Button is Disabled

    End Sub

    Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
        SerialPort1.PortName = cmbPort.Text         'Set SerialPort1 to the selected COM port at startup
        SerialPort1.BaudRate = cmbBaud.Text         'Set Baud rate to the selected value on 

        'Other Serial Port Property
        SerialPort1.Parity = IO.Ports.Parity.None
        SerialPort1.StopBits = IO.Ports.StopBits.One
        SerialPort1.DataBits = 8            'Open our serial port
        SerialPort1.Open()

        btnConnect.Enabled = False          'Disable Connect button
        btnDisconnect.Enabled = True        'and Enable Disconnect button

    End Sub

    Private Sub btnDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisconnect.Click
        SerialPort1.Close()             'Close our Serial Port

        btnConnect.Enabled = True
        btnDisconnect.Enabled = False
    End Sub

    Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
        SerialPort1.Write(txtTransmit.Text & vbCr) 'The text contained in the txtText will be sent to the serial port as ascii
        'plus the carriage return (Enter Key) the carriage return can be ommitted if the other end does not need it
    End Sub

    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        ReceivedText(SerialPort1.ReadExisting())    'Automatically called every time a data is received at the serialPort
    End Sub
    Private Sub ReceivedText(ByVal [text] As String)
        'compares the ID of the creating Thread to the ID of the calling Thread
        If Me.rtbReceived.InvokeRequired Then
            Dim x As New SetTextCallback(AddressOf ReceivedText)
            Me.Invoke(x, New Object() {(text)})
        Else
            Me.rtbReceived.Text &= [text]
        End If
    End Sub

    Private Sub cmbPort_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbPort.SelectedIndexChanged
        If SerialPort1.IsOpen = False Then
            SerialPort1.PortName = cmbPort.Text         'pop a message box to user if he is changing ports
        Else                                            'without disconnecting first.
            MsgBox("Valid only if port is Closed", vbCritical)
        End If
    End Sub

    Private Sub cmbBaud_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbBaud.SelectedIndexChanged
        If SerialPort1.IsOpen = False Then
            SerialPort1.BaudRate = cmbBaud.Text         'pop a message box to user if he is changing baud rate
        Else                                            'without disconnecting first.
            MsgBox("Valid only if port is Closed", vbCritical)
        End If
    End Sub

    
End Class
Köszönöm!
Avatar
zb83
Biztosítékgyilkos
Hozzászólások: 69
Csatlakozott: 2008. október 24. péntek, 6:00

Hozzászólás Szerző: zb83 »

Sziasztok,

Csak néhány megjegyzést fűznék hozzá a fentiekhez.

Az utoljára bemásolt kód vb2008-ban is ugyanúgy működik, sőt, 2005-ben is, mivel semmi olyat nem használ, amit nem tartalmaz a 2.0-s framework.

C# semmivel sem tud többet, mint a VB. Amit C#-ban meg lehet csinálni, azt VB.net-ben ugyanúgy. Egyik kutya, másik eb. Csak a szintaktika ami más. A háttér ugyanaz. Kinek melyik tetszik.

C#-nak talán annyi előnye van, hogy ha tudsz C#-ul, akkor -kis túlzással- már Java-ul is tudsz.
Avatar
herc1234
Bitfaragó
Hozzászólások: 459
Csatlakozott: 2007. február 9. péntek, 7:00

Hozzászólás Szerző: herc1234 »

Szálkezelés polimorfizmus szemétgyüjtés stb.....
Avatar
Sanci
Bitmanipulátor
Hozzászólások: 107
Csatlakozott: 2008. március 14. péntek, 6:00

Hozzászólás Szerző: Sanci »

Köszönöm!

Én VB2008 alatt próbáltam.
Sajnos ott nem működött valami oknál fogva.
Lehet én kutyultam el valamit...
hm...
Válasz küldése