Hallo Vb-Paradise
Ich bin am Ende angelangt und komme net weiter. Meine Software welche, alle Aktionen von Skype ausliesst und diese Per Serial-Port an einen Arduino UNO mit LCDisplay weitergibt, saugt nach kurzer Zeit immer 13% Auslastung obwohl es nix grosses macht, ausser alle 5 Sekunden den Skypestatus ausliesst.
Vieleicht sehe ich den Fehler nicht und jemand kann mir dabei helfen:
VB-Code
Download (1.4 MB) des ganzen Projekts
Danke im Vorraus
mfg Ebrithil
Ich bin am Ende angelangt und komme net weiter. Meine Software welche, alle Aktionen von Skype ausliesst und diese Per Serial-Port an einen Arduino UNO mit LCDisplay weitergibt, saugt nach kurzer Zeit immer 13% Auslastung obwohl es nix grosses macht, ausser alle 5 Sekunden den Skypestatus ausliesst.
Vieleicht sehe ich den Fehler nicht und jemand kann mir dabei helfen:
VB.NET-Quellcode
- Option Strict On
- Imports SKYPE4COMLib
- Public Class Form1
- #Region "Globale Variablen"
- Dim Skype As Skype = New Skype
- Dim Time As String
- Dim old_Time As String
- Dim Read As String
- Dim Disp As Boolean = False
- Dim First As Boolean = True
- Dim Online As Boolean = False
- Dim Skype_Senders As New List(Of String)
- Dim Skype_Messages As New List(Of String)
- Dim Index As Integer
- Dim Blacklist As String = "Jonas Fe/2"
- Dim Status(0 To 1000) As Boolean
- Dim First_2 As Boolean = True
- #End Region
- #Region "Globale Funktionen"
- Private Sub sleep(ByVal milliseconds As Integer)
- Dim sw As New Stopwatch
- sw.Start()
- Do Until sw.ElapsedMilliseconds = milliseconds
- My.Application.DoEvents()
- Loop
- sw.Reset()
- End Sub
- Public Sub Check()
- Read = Nothing
- SP.Write(CStr(4))
- SP.Write(vbCr)
- End Sub
- Public Sub tog_light()
- Read = Nothing
- SP.Write(CStr(5))
- SP.Write(vbCr)
- End Sub
- Public Sub Write(ByVal message As String, ByVal line As Integer)
- Try
- Read = Nothing
- If SP.IsOpen = False Then
- SP.Open()
- End If
- SP.Write(CStr(line))
- For i As Integer = 0 To message.Length - 1
- Dim s As String
- s = message.Substring(i, 1)
- SP.Write(s)
- Next
- SP.Write(vbCr)
- sleep(50)
- Catch
- End Try
- End Sub
- Private _Encoding As System.Text.Encoding
- Public Sub New()
- InitializeComponent()
- _Encoding = System.Text.Encoding.Default
- End Sub
- Private Sub SP_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SP.DataReceived
- Dim ToRead As Integer = SP.BytesToRead
- If ToRead > 0 Then
- Dim Buffer(ToRead - 1) As Byte
- SP.Read(Buffer, 0, ToRead)
- Read &= _Encoding.GetString(Buffer)
- End If
- End Sub
- Private Sub ToolStripMenuItem3_Click(sender As Object, e As System.EventArgs) Handles ToolStripMenuItem3.Click
- NotifyIcon1.Dispose()
- End
- End Sub
- Private Sub try_Connect()
- For Each con As String In My.Computer.Ports.SerialPortNames
- Try
- If SP.IsOpen Then
- SP.Close()
- End If
- SP.PortName = con
- SP.Open()
- Check()
- Catch ex As Exception
- End Try
- sleep(150)
- If Not Read = Nothing Then
- If Read.Contains("Ebrithil-Display") Then
- Exit For
- End If
- End If
- Next
- Try
- Check()
- sleep(150)
- If Not Read = Nothing Then
- If Read.Contains("Ebrithil-Display") Then
- Disp = True
- Check_Disp()
- First = True
- If Online = True Then
- Online = False
- Else
- Online = True
- End If
- Else
- Disp = False
- Check_Disp()
- End If
- Else
- Disp = False
- Check_Disp()
- End If
- Catch ex As Exception
- Disp = False
- Check_Disp()
- End Try
- End Sub
- #End Region
- #Region "Initialisierung"
- Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
- Me.Hide()
- For Each con As String In My.Computer.Ports.SerialPortNames
- Try
- If SP.IsOpen Then
- SP.Close()
- End If
- SP.PortName = con
- SP.Open()
- Check()
- Catch ex As Exception
- End Try
- sleep(150)
- If Not Read = Nothing Then
- If Read.Contains("Ebrithil-Display") Then
- Disp = True
- Check_Disp()
- Exit For
- End If
- End If
- Next
- Try
- Check()
- sleep(150)
- If Not Read = Nothing Then
- If Read.Contains("Ebrithil-Display") Then
- Disp = True
- Check_Disp()
- Else
- Disp = False
- Check_Disp()
- End If
- Else
- Disp = False
- Check_Disp()
- End If
- Catch ex As Exception
- Disp = False
- Check_Disp()
- End Try
- 'tm_Con.Start()
- Me.Hide()
- ini_Skype()
- My.Application.DoEvents()
- tm_Skype.Start()
- tm_Time.Start()
- tm_Skype_Status.Start()
- Write(" ", 1)
- Write(" ", 2)
- Write(" ", 3)
- End Sub
- #End Region
- #Region "Connection"
- Private Sub Check_Disp()
- If Disp = False Then
- NotifyIcon1.Text = "Ebrithil-Display not found"
- ToolStripMenuItem1.Text = NotifyIcon1.Text
- Else
- NotifyIcon1.Text = "Ebrithil-Display on " & SP.PortName
- ToolStripMenuItem1.Text = NotifyIcon1.Text
- End If
- End Sub
- #End Region
- #Region "Timer's"
- 'Zeit
- Private Sub tm_Time_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tm_Time.Tick
- Dim h, m, day, month, year As String
- h = CStr(My.Computer.Clock.LocalTime.Hour)
- If My.Computer.Clock.LocalTime.Minute.ToString.Length = 1 Then
- m = "0" & My.Computer.Clock.LocalTime.Minute
- Else
- m = CStr(My.Computer.Clock.LocalTime.Minute)
- End If
- If My.Computer.Clock.LocalTime.Day.ToString.Length = 1 Then
- day = "0" & My.Computer.Clock.LocalTime.Day
- Else
- day = CStr(My.Computer.Clock.LocalTime.Day)
- End If
- If My.Computer.Clock.LocalTime.Month.ToString.Length = 1 Then
- month = "0" & My.Computer.Clock.LocalTime.Month
- Else
- month = CStr(My.Computer.Clock.LocalTime.Month)
- End If
- year = CStr(My.Computer.Clock.LocalTime.Year)
- Time = " " & h & ":" & m & " " & day & "." & month & "." & year
- If First = True Then
- Try
- Write(Time, 0)
- First = False
- Catch ex As Exception
- End Try
- End If
- ToolStripMenuItem2.Text = CStr(Disp)
- If Not old_Time = Time Then
- If Disp = True Then
- Try
- Write(Time, 0)
- Catch ex As Exception
- End Try
- End If
- End If
- old_Time = Time
- End Sub
- #End Region
- #Region "Skype"
- Private Sub ini_Skype()
- Skype.Attach(7, False)
- AddHandler Skype.MessageStatus, AddressOf skype_MessageStatus
- End Sub
- Sub skype_MessageStatus(ByVal msg As ChatMessage, ByVal status As TChatMessageStatus)
- Try
- If status = TChatMessageStatus.cmsReceived Or status = TChatMessageStatus.cmsSent Then
- Dim Body As String = msg.Body
- Dim Name As String = msg.FromDisplayName
- If Not Blacklist.Contains(Name) And Not Body = Nothing Then
- If Body.Length > 40 Then
- Dim b As String = Body
- For i As Integer = 1 To CInt(Math.Round(Body.Length / 40 + 0.5))
- Skype_Senders.Add(Name & " writes:")
- Skype_Messages.Add(b)
- Try
- b = b.Remove(0, 40)
- Catch ex As Exception
- b = Nothing
- Body = Nothing
- End Try
- Next
- Else
- Skype_Senders.Add(Name & " writes:")
- Skype_Messages.Add(Body)
- End If
- If Online = True Then
- Online = False
- Else
- Online = True
- End If
- End If
- End If
- Catch ex As Exception
- End Try
- End Sub
- Private Sub tm_Skype_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tm_Skype.Tick
- If Disp = True Then
- If Index > Skype_Senders.Count - 1 Then
- Skype_Senders.Clear()
- Skype_Messages.Clear()
- Index = 0
- Else
- If Skype_Messages.Item(Index).Length > 20 Then
- Dim Message As String = Skype_Messages.Item(Index)
- Write(Message.Substring(0, 20), 2)
- Message = Message.Remove(0, 20)
- Write(Message, 3)
- Write(Skype_Senders.Item(Index), 1)
- Else
- Write(Skype_Senders.Item(Index), 1)
- Write(Skype_Messages.Item(Index), 2)
- Write(" ", 3)
- End If
- Index += 1
- End If
- End If
- End Sub
- Private Sub tm_Skype_Status_Tick(sender As System.Object, e As System.EventArgs) Handles tm_Skype_Status.Tick
- If First_2 = True Then
- Dim i As String = CStr(0)
- For Each user As SKYPE4COMLib.User In Skype.Friends
- If user.OnlineStatus = TOnlineStatus.olsOnline Then
- Status(CInt(i)) = True
- Else
- Status(CInt(i)) = False
- End If
- i = CStr(1 + CInt(i))
- Next
- First_2 = False
- Else
- Dim i As String = CStr(0)
- For Each user As SKYPE4COMLib.User In Skype.Friends
- If Status(CInt(i)) = True And Not user.OnlineStatus = TOnlineStatus.olsOnline Then
- Status(CInt(i)) = False
- If user.DisplayName = Nothing Then
- If user.FullName = Nothing Then
- Else
- Skype_Senders.Add(user.FullName & " is now:")
- Skype_Messages.Add(" Offline")
- End If
- Else
- Skype_Senders.Add(user.DisplayName & " is now:")
- Skype_Messages.Add(" Offline")
- End If
- End If
- If Status(CInt(i)) = False And user.OnlineStatus = TOnlineStatus.olsOnline Then
- Status(CInt(i)) = True
- If user.DisplayName = Nothing Then
- If user.FullName = Nothing Then
- Else
- Skype_Senders.Add(user.FullName & " is now:")
- Skype_Messages.Add(" Online")
- End If
- Else
- Skype_Senders.Add(user.DisplayName & " is now:")
- Skype_Messages.Add(" Online")
- End If
- End If
- i = CStr(1 + CInt(i))
- Next
- End If
- End Sub
- #End Region
- Private Sub ToolStripMenuItem4_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem4.Click
- try_Connect()
- End Sub
- End Class
Download (1.4 MB) des ganzen Projekts
Danke im Vorraus
mfg Ebrithil