Programm läuft nicht auf anderen Rechner

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Feuergott.

    Programm läuft nicht auf anderen Rechner

    Hallo liebe Gemeinde,

    ich habe ein kleines Programm zusammengestückelt mit Microsoft Visual Basic 2010.
    Auf den 2 Rechnern ( Windows Vista und XP) wo ich Visual Basic installiert habe läuft mein Programm auch und es macht genau das was es soll.
    Jetzt möchte ich es aber auf einen anderen Rechner( Windows Vista ) laufen lassen ohne Visual Basic zu installieren.

    Dabei bekomme ich immer eine Fehlermeldung das mein Programm nicht mehr Funktioniert. Jedoch kommt die Meldung direkt nach dem Doppelklick auf die *.exe Datei. Ich sehe nicht mal das Fenster in dem mein Programm ausgeführt wird, sondern es kommt nur diese Fehlermeldung. Das neuste .Net Framework habe ich natülich auf den Rechner aufgespielt.

    Kann mir einer einen Tipp geben woran es liegen kann, muss ich noch irgendwelche Bibo´s mit kopieren oder sollten die Programme eigentlich lauffähig sein???

    MFG Feet.

    Feet schrieb:

    mit Microsoft Visual Basic 2010

    Auch wenn es Semantik ist: die IDE heisst Visual Studio 2010, die dort benutzte Visual Basic Version ist VB 9. Diese muss/kann man auch nicht auf einem anderen Rechner installieren.

    Feet schrieb:

    Dabei bekomme ich immer eine Fehlermeldung das mein Programm nicht mehr Funktioniert

    Dann solltest Du mal einen Screenshot von dieser Fehlermeldung einblenden, denn die wird schon etwas mehr aussagen als das das Programm "nicht funktioniert".

    Feet schrieb:

    muss ich noch irgendwelche Bibo´s mit kopieren

    Wenn Du damit Bibliotheken/Libraries meinst: es muss auf jeden Fal die richtige Framework-Version installiert sein, und nicht nur die neueste (FW 4.0). Ansonsten können auch je nach Deinem Programm andere Libraries fehlen, aber darüber gibt die Fehlermeldung Aufschluss.
    Oder es kann sein das du in deinem "Zusammengestückelten" Programm irgendeine .dll bneutzt hat die für die Aszführung verantwortlich/wichtig ist.
    Ich schliesse mich ausserdem meinem vorredner, denn du solltest unbedingt ein Bild von der Fehlermldung posten!

    mfg paulkoch95
    "yippieh! it compiles - ship it!"
    Ich habe hier nochmal den Quelltext eventuell sieht ja der Eine oder Andere was.

    VB.NET-Quellcode

    1. Option Explicit On
    2. Imports System.Threading
    3. Imports System.IO.Ports.SerialPort
    4. Public Class Form1
    5. Dim len_txt As Integer 'Textlänge
    6. Dim _Loop As Byte 'Loop_Flag
    7. ' Dim zeile As Integer
    8. Dim Text1 As String
    9. Dim Text2 As String
    10. Dim text3 As String
    11. Dim max_kanal As Integer
    12. Dim pos1 As Integer
    13. Dim count As Integer
    14. Dim wait_time As Integer
    15. Private WeiterGehts As Boolean = False
    16. Private ms As Integer
    17. Dim r As String
    18. Dim chan_nr As Integer
    19. Dim Mod_nr As Integer
    20. Dim buf As Byte()
    21. Dim returnStr As String = ""
    22. Dim aa As Integer
    23. Dim bb As Integer
    24. Private Property Wert As Integer
    25. Private Property Size_ As Integer
    26. Function ReceiveSerialData() As String
    27. Try
    28. SerialPort1.ReadTimeout = 100
    29. Dim Incoming As String = ""
    30. Incoming = SerialPort1.ReadByte()
    31. returnStr = Incoming
    32. Catch ex As TimeoutException
    33. returnStr = ""
    34. Finally
    35. End Try
    36. Return returnStr
    37. End Function
    38. <Runtime.InteropServices.DllImport("user32.dll")> _
    39. Public Shared Function GetAsyncKeyState(ByVal vKey As Int32) As Short
    40. End Function
    41. Public Sub Wartezeit(ByVal Millisekunden As Integer)
    42. ms = Millisekunden '* 10
    43. WeiterGehts = False
    44. Dim T As Thread = New Thread(AddressOf Warten)
    45. T.Start()
    46. Do
    47. Application.DoEvents()
    48. Loop Until WeiterGehts = True
    49. End Sub
    50. 'Hier wartet das Programm
    51. Private Sub Warten()
    52. Thread.Sleep(ms)
    53. WeiterGehts = True
    54. End Sub
    55. 'Exit
    56. Private Sub Ende_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ende.Click
    57. SerialPort1.Close()
    58. End
    59. End Sub
    60. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    61. len_txt = 0
    62. _Loop = 0
    63. max_kanal = 8
    64. wait_time = 300
    65. Size_ = 64
    66. pos1 = 0
    67. '**************************** SCAN FOR COM PORTS *******************************
    68. Dim port As String
    69. Dim ports As String()
    70. ports = IO.Ports.SerialPort.GetPortNames() 'Ports des Rechners ermitteln
    71. For Each port In ports
    72. Try
    73. With SerialPort1
    74. .PortName = port
    75. .ReadTimeout = Int32.Parse(10) 'ReadTimeout in ms
    76. .Open()
    77. End With
    78. Catch es As Exception
    79. Finally
    80. If SerialPort1.IsOpen = True Then
    81. ComboBox1.Items.Add(port)
    82. End If
    83. SerialPort1.Close()
    84. End Try
    85. Next port
    86. '*******************************************************************************
    87. End Sub
    88. Private Sub Button_GO_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_GO.Click
    89. Dim old As String
    90. 'max_kanal = RTB1.Lines(0).Length
    91. RTB1.SelectAll()
    92. RTB1.SelectionColor = Color.Green
    93. RTB1.SelectionFont = New Font("Arial", 8) ' Markieren der Zeilen
    94. If SerialPort1.IsOpen = False Then
    95. MsgBox("Select Com Port First!", vbInformation, "Com ERROR")
    96. Else
    97. SerialPort1.Write(New Byte() {175, 254}, 0, 2) ' Reset Modul
    98. Do
    99. ReceiveSerialData()
    100. Application.DoEvents()
    101. Loop Until returnStr = "66"
    102. 'Wartezeit(1)
    103. 'SerialPort1.Write(New Byte() {254}, 0, 1) '
    104. len_txt = RTB1.Lines.Length 'Anzahl der Zeilen bestimmen
    105. If len_txt = 0 Then MsgBox("Keine Daten" & Chr(13) & "Was soll ich machen?", vbCritical, "ERROR")
    106. 'For pos0 = 1 To max_kanal ' von 1 bis max. Kanäle
    107. 'Text1 = Mid$(RTB1.Lines(0), pos0, 1)
    108. 'Text = Mid$(RTB1.Lines(Zeilennummer), Position, Anzahl
    109. 'If Text1 = 1 Then TextBox1.Text = pos0 'hier die Printausgabe
    110. 'If Text1 = 1 Then SerialPort1.Write(Chr(pos0))
    111. 'Wartezeit(wait_time)
    112. 'Next
    113. old = "0"
    114. For i = 1 To max_kanal
    115. old = old & "0"
    116. Next
    117. len_txt = len_txt - 1
    118. Do
    119. text3 = Mid$(RTB1.Lines(len_txt), 1, 1)
    120. If text3 = "" Then len_txt = len_txt - 1
    121. Loop Until text3 = "0" Or "1"
    122. Do
    123. For zeile = 0 To len_txt '- 1 ' so oft wie es Zeilen in der Textbox gibt
    124. 'RTB1.SelectionCharOffset
    125. RTB1.ScrollToCaret()
    126. RTB1.Select(RTB1.GetFirstCharIndexFromLine(zeile), RTB1.Lines(zeile).Length) ' aktuelle zeile = rot
    127. RTB1.SelectionColor = Color.Red
    128. If zeile = 0 Then
    129. RTB1.Select(RTB1.GetFirstCharIndexFromLine(len_txt), RTB1.Lines(len_txt).Length)
    130. RTB1.SelectionColor = Color.Green
    131. Else
    132. RTB1.Select(RTB1.GetFirstCharIndexFromLine(zeile - 1), RTB1.Lines(zeile - 1).Length)
    133. RTB1.SelectionColor = Color.Green
    134. End If
    135. For ii = 1 To max_kanal ' so oft wie es Zeichen in der Textbox gibt
    136. pos1 = ii
    137. Text1 = Mid$(old, pos1, 1)
    138. Text2 = Mid$(RTB1.Lines(zeile), pos1, 1)
    139. 'festlegen des Moduls
    140. If pos1 > 112 Then Mod_nr = 78
    141. If pos1 <= 112 Then Mod_nr = 76
    142. If pos1 <= 96 Then Mod_nr = 74
    143. If pos1 <= 80 Then Mod_nr = 72
    144. If pos1 <= 64 Then Mod_nr = 70
    145. If pos1 <= 48 Then Mod_nr = 68
    146. If pos1 <= 32 Then Mod_nr = 66
    147. If pos1 <= 16 Then Mod_nr = 64
    148. If Text1 <> Text2 Then
    149. If Mod_nr = 64 Then chan_nr = pos1
    150. If Mod_nr = 66 Then chan_nr = pos1 - 16
    151. If Mod_nr = 68 Then chan_nr = pos1 - 32
    152. If Mod_nr = 70 Then chan_nr = pos1 - 48
    153. If Mod_nr = 72 Then chan_nr = pos1 - 64
    154. If Mod_nr = 74 Then chan_nr = pos1 - 80
    155. If Mod_nr = 76 Then chan_nr = pos1 - 96
    156. If Mod_nr = 78 Then chan_nr = pos1 - 112
    157. If Text2 = "1" Then SerialPort1.Write(New Byte() {Mod_nr, chan_nr}, 0, 2)
    158. count = chan_nr + 16
    159. If Text2 = "0" Then SerialPort1.Write(New Byte() {Mod_nr, count}, 0, 2)
    160. For h As Integer = 0 To 100000
    161. Next
    162. 'Do
    163. 'ReceiveSerialData()
    164. 'Application.DoEvents()
    165. 'Loop Until returnStr = "65"
    166. End If
    167. Next
    168. old = RTB1.Lines(zeile)
    169. Wartezeit(wait_time) ' Wechselgeschwindigkeit zwischen 2 Zeilen
    170. Next
    171. Loop Until _Loop = 0
    172. End If
    173. End Sub
    174. Private Sub Button_Loop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Loop.Click
    175. If Button_Loop.Text = "Stop" Then
    176. Button_Loop.Text = "Loop"
    177. _Loop = 0
    178. Else
    179. Button_Loop.Text = "Stop"
    180. _Loop = 1
    181. End If
    182. End Sub
    183. Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    184. SerialPort1.Close()
    185. SerialPort1.BaudRate = 115200
    186. SerialPort1.PortName = ComboBox1.Text
    187. SerialPort1.Open()
    188. If SerialPort1.IsOpen Then
    189. ComboBox1.BackColor = Color.Green
    190. Else
    191. ComboBox1.BackColor = Color.Red
    192. MsgBox("Can't open selected COM Port." & Chr(13) & "Try another one.", vbCritical, "ERROR Open Com")
    193. End If
    194. End Sub
    195. Private Sub speed_plus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles speed_plus.Click
    196. wait_time = wait_time + 10
    197. If wait_time > 10000 Then wait_time = 10000
    198. TextBox2.Text = wait_time
    199. Wartezeit(50)
    200. End Sub
    201. Private Sub speed_minus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles speed_minus.Click
    202. ' If wait_time > 20 Then
    203. wait_time = wait_time - 10
    204. ' Else
    205. ' wait_time = wait_time - 1
    206. ' End If
    207. If wait_time = 90 Then wait_time = 100
    208. TextBox2.Text = wait_time
    209. Wartezeit(50)
    210. End Sub
    211. Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
    212. wait_time = TextBox2.Text
    213. If wait_time = 0 Then wait_time = 1
    214. If wait_time > 10000 Then wait_time = 10000
    215. TextBox2.Text = wait_time
    216. Wartezeit(1)
    217. End Sub
    218. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    219. max_kanal = max_kanal + 8
    220. If max_kanal > 128 Then max_kanal = 128
    221. 'TextBox1.Text = max_kanal
    222. Label3.Text = max_kanal
    223. Size_ = Size_ + 56 '(max_kanal * 8) - 8
    224. If Size_ > 896 Then Size_ = 896
    225. RTB1.Size = New Size(Size_, 220)
    226. Wartezeit(50)
    227. End Sub
    228. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    229. max_kanal = max_kanal - 8
    230. If max_kanal < 8 Then max_kanal = 8
    231. 'TextBox1.Text = max_kanal
    232. Label3.Text = max_kanal
    233. Size_ = Size_ - 56 '(max_kanal * 8) - 8
    234. If Size_ < 64 Then Size_ = 64
    235. RTB1.Size = New Size(Size_, 220)
    236. Wartezeit(50)
    237. End Sub
    238. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    239. If SerialPort1.IsOpen Then
    240. SerialPort1.Write(New Byte() {175}, 0, 1)
    241. SerialPort1.Write(New Byte() {254}, 0, 1)
    242. Wartezeit(1)
    243. Else
    244. MsgBox("Select Com Port First!", vbInformation, "Com ERROR")
    245. End If
    246. End Sub
    247. Private Sub RTB1_MouseLeave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RTB1.MouseLeave
    248. RTB1.SelectAll()
    249. RTB1.SelectionColor = Color.Green
    250. RTB1.SelectionFont = New Font("Arial", 8) ' Markieren der Zeilen
    251. End Sub
    252. End Class
    Naja, hatte zuerst keine Framework drauf, jedoch kommt dann die Meldung dass die und die Version des .Net Framework benötigt wird und das man diese vom Hersteller bekommt :)
    Nach dem installieren kommt die oben genannte Fehlermeldung.

    Mhh ich hab keine Ahnung warum es klemmt.

    Feet schrieb:

    Version 4.0.30319

    Setze doch Dein verwendetes Framework auf 2.0 herab, das sollte mittlerweile auf jedem Windows Rechner installiert sein. Oder gibt es einen Grund der dagegen spricht ?

    Zu den Fehlermeldungen: die sind nun wirklich absolut nutzlos - Microsoft wie wir es kennen und (nicht) lieben ...

    Edit: mal geschaut ob eventuell in der Ereignisanzeige des anderen Rechners mehr drinsteht ? (Man darf ja mal hoffen)
    Ich habe nochmal probiert und gemacht, jedoch ohne Erfolg.
    Habe das Zielframework auf 2.0 geschraubt und es kommt immer noch ein Fehler beim ausführen. :(

    Wie gesagt, auf 2 Rechner läuft es jedoch ist auf diesen auch Visual Basic drauf.

    Windows XP zeigt etwas mehr Fehler an als Vista

    Für die nachwelt

    HUHU

    mal ne frage kennt einer mitlerweile hier ne antwort oder weis wo man diese findet??

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Feuergott“ () aus folgendem Grund: Nach 48 Stunden fehler suche und alles in frage stellen bin ich zu der Lösung gekommen bei Vista und win7 können die ICONs fast beliebig viele pixel haben aber bei XP solltet ihr drauf achten das ICONs nur 32 x 32 pixel groß sind dannahc ging es zu midnest bei mir ^^