Autor
|
Tema: Una ayuda com codigo para .exe, por favor. (Leído 6,708 veces)
|
carlosguay
Desconectado
Mensajes: 42
|
Vereis llevo un tiempo haciendo un bat, para manipular detos de un modem. Tengo que hacer varias cosas, que las tengo ya resueltas, pero lo ultimo es sacar unos datos de la flash del modem. Esto no se puede hacer com batch y tengo entendido que tiene que hacerse com java, por lo que tengo leido para usar java es mejor com visualbasic y por eso estoy intentando usar este codigo que os pongo. Imports System Public Class Prueba Public Shared Sub Main() Public Sub New() Me.components = Nothing Me.connected = False Me.port = &H17 Me.raf = Nothing Me.bis = Nothing Me.ps = Nothing Me.skt = Nothing Dim num As Integer = 5 If (num < 0) Then Throw New NegativeArraySizeException End If Dim textArray1 As String() = New String(num - 1) {} textArray1(3) = "perm" Me.im = textArray1 Me.InitializeComponent End Sub Public Overridable Sub connection(ByVal b As Boolean) Me.connected = b Me.hostname.set_Enabled((b Xor True)) If Not b Then Try Me.skt.close Catch obj1 As Object When (?) Dim throwable As Throwable Dim exception As Exception = throwable End Try Try Me.raf.Close Catch obj2 As Object When (?) Dim throwable2 As Throwable Dim exception2 As Exception = throwable2 End Try End If End Sub Public Overridable Function openFlash(ByVal s As String) As Boolean Me.send2Serial("cd /flash" & ChrW(13)) Try Thread.sleep(500) Catch obj1 As Object When (?) Dim throwable As Throwable Dim exception As Exception = throwable End Try Me.send2Serial("close" & ChrW(13)) Try Thread.sleep(500) Catch obj2 As Object When (?) Dim throwable2 As Throwable Dim exception2 As Exception = throwable2 End Try Me.send2Serial(New StringBuffer().append("open ").append(s).append(ChrW(13)).ToString) Select Case Me.wait4("Flash driver opened", "ERROR - failed to o", Nothing, Nothing, Nothing) Case -1 Return False Case 2 Me.cout("ERROR: Unable to open the flash driver.") Me.cout("You need to reboot the modem.") Return False End Select Me.cout("Flash driver Opened.") If (Me.wait4("CM/Flash> ", Nothing, Nothing, Nothing, Nothing) Is -1) Then Return False End If Me.cout(New StringBuffer().append("Flash Device Ready (").append(s).append(" region)").ToString) Return True End Function Public Overridable Sub readFlash(ByVal s As String) If Not Me.openFlash(s) Then Return End If Dim stream As FileOutputStream = Nothing Dim flag As Boolean = False Try stream = New FileOutputStream(New StringBuffer().append(s).append(".bin").ToString) If (Not stream Is Nothing) Then flag = True End If Catch obj1 As Object When (?) Dim throwable As Throwable Dim exception As Exception = throwable End Try If Not flag Then Me.cout(New StringBuffer().append("Error opening local file ").append(s).append(".bin for writing").ToString) Return End If Me.cout(New StringBuffer().append("Reading ").append(s).append(" Flash region").ToString) Dim num As Integer = 0 Dim num2 As Integer = 0 Label_0249: Do While flag Dim str As String = "" Me.send2Serial(New StringBuffer().append("readDirect 256 ").append(num).append(ChrW(13)).ToString) If (Me.wait4("region:", Nothing, Nothing, Nothing, Nothing) Is -1) Then flag = False Exit Do End If Do While flag Dim num3 As Integer = Me.getSerialByte If (num3 Is -1) Then Me.cout("Communication Error") flag = False goto Label_0249 End If If ((((num2 < &H100) AndAlso (num3 >= &H30)) AndAlso (num3 <= &H39)) OrElse ((num3 >= &H61) AndAlso (num3 <= &H66))) Then str = New StringBuffer().append(str).append(DirectCast(num3, Char)).ToString If (StringImpl.length(str) Is 2) Then Dim num4 As Integer = Integer.parseInt(str, &H10) Try stream.write(num4) Catch obj2 As Object When (?) Dim throwable2 As Throwable Dim exception2 As Exception = throwable2 End Try str = "" num2 += 1 Continue Do End If End If Select Case num3 Case &H42 Me.cout(New StringBuffer().append("Flash read of ").append(s).append(" region is complete. Output to file: ").append(s).append(".bin").ToString) Me.send2Serial("close" & ChrW(13)) flag = False goto Label_0249 Case &H43 Do While (Not Me.getSerialByte Is &H3E) Loop num = (num + &H100) num2 = 0 Me.cout(New StringBuffer().append("Read ").append(num).append(" bytes").ToString) goto Label_0249 End Select Loop Loop Try stream.close Catch obj3 As Object When (?) Dim throwable3 As Throwable Dim exception3 As Exception = throwable3 End Try End Sub Public Overridable Function wait4(ByVal w1 As String, ByVal w2 As String, ByVal w3 As String, ByVal w4 As String, ByVal w5 As String) As Integer Dim str As String = "" Dim i As Integer For i = 0 To StringImpl.length(w1) - 1 str = New StringBuffer().append(str).append(" ").ToString Next i Do Dim num2 As Integer = Me.getSerialByte If (num2 Is -1) Then Return num2 End If str = New StringBuffer().append(StringImpl.substring(str, 1)).append(DirectCast(num2, Char)).ToString If StringImpl.equals(str, w1) Then Return 1 End If If ((Not w2 Is Nothing) AndAlso StringImpl.equals(str, w2)) Then Return 2 End If If ((Not w3 Is Nothing) AndAlso StringImpl.equals(str, w3)) Then Return 3 End If If ((Not w4 Is Nothing) AndAlso StringImpl.equals(str, w4)) Then Return 4 End If Loop While ((w5 Is Nothing) OrElse Not StringImpl.equals(str, w5)) Return 5 End Function Console.Read End Sub End Class
Esto que os pongo som recortes que e ido pegando, que creo hace lo que necesito, pero como vereis, le sobraran cosas y le faltaran seguro. Pues si alguien tiene tiempo de hecharle una mirada a este codigo, se lo agredeseria mucho. Yo lo unico que necesito es que al ejecutar el exe. saque lo que necesito sin mas, osea sin preguntar nada, ejecutar y funcionar. un saludo
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Primero que nada eso es .net
Segundo, esta todo el codigo dentro del Sub Main o.O (deberias ponerlo aparte)
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Esto que os pongo som recortes que e ido pegando, que creo hace lo que necesito, pero como vereis, le sobraran cosas y le faltaran seguro. no se que hace... ni me he fijado, solo te arreglo lo que te dije, el sub main, es aparte. Pero creo que no funciona (a simple vista), lo que hiciste es una clase, deberias implementarlo en un formulario Imports System Public Class Prueba Public Shared Sub Main() Application.Run(New Prueba()) End Sub Public Sub New() Me.components = Nothing Me.connected = False Me.port = &H17 Me.raf = Nothing Me.bis = Nothing Me.ps = Nothing Me.skt = Nothing Dim num As Integer = 5 If (num < 0) Then Throw New NegativeArraySizeException End If Dim textArray1 As String() = New String(num - 1) {} textArray1(3) = "perm" Me.im = textArray1 Me.InitializeComponent End Sub Public Overridable Sub connection(ByVal b As Boolean) Me.connected = b Me.hostname.set_Enabled((b Xor True)) If Not b Then Try Me.skt.close Catch obj1 As Object When (?) Dim throwable As Throwable Dim exception As Exception = throwable End Try Try Me.raf.Close Catch obj2 As Object When (?) Dim throwable2 As Throwable Dim exception2 As Exception = throwable2 End Try End If End Sub Public Overridable Function openFlash(ByVal s As String) As Boolean Me.send2Serial("cd /flash" & ChrW(13)) Try Thread.sleep(500) Catch obj1 As Object When (?) Dim throwable As Throwable Dim exception As Exception = throwable End Try Me.send2Serial("close" & ChrW(13)) Try Thread.sleep(500) Catch obj2 As Object When (?) Dim throwable2 As Throwable Dim exception2 As Exception = throwable2 End Try Me.send2Serial(New StringBuffer().append("open ").append(s).append(ChrW(13)).ToString) Select Case Me.wait4("Flash driver opened", "ERROR - failed to o", Nothing, Nothing, Nothing) Case -1 Return False Case 2 Me.cout("ERROR: Unable to open the flash driver.") Me.cout("You need to reboot the modem.") Return False End Select Me.cout("Flash driver Opened.") If (Me.wait4("CM/Flash> ", Nothing, Nothing, Nothing, Nothing) Is -1) Then Return False End If Me.cout(New StringBuffer().append("Flash Device Ready (").append(s).append(" region)").ToString) Return True End Function Public Overridable Sub readFlash(ByVal s As String) If Not Me.openFlash(s) Then Return End If Dim stream As FileOutputStream = Nothing Dim flag As Boolean = False Try stream = New FileOutputStream(New StringBuffer().append(s).append(".bin").ToString) If (Not stream Is Nothing) Then flag = True End If Catch obj1 As Object When (?) Dim throwable As Throwable Dim exception As Exception = throwable End Try If Not flag Then Me.cout(New StringBuffer().append("Error opening local file ").append(s).append(".bin for writing").ToString) Return End If Me.cout(New StringBuffer().append("Reading ").append(s).append(" Flash region").ToString) Dim num As Integer = 0 Dim num2 As Integer = 0 Label_0249: Do While flag Dim str As String = "" Me.send2Serial(New StringBuffer().append("readDirect 256 ").append(num).append(ChrW(13)).ToString) If (Me.wait4("region:", Nothing, Nothing, Nothing, Nothing) Is -1) Then flag = False Exit Do End If Do While flag Dim num3 As Integer = Me.getSerialByte If (num3 Is -1) Then Me.cout("Communication Error") flag = False goto Label_0249 End If If ((((num2 < &H100) AndAlso (num3 >= &H30)) AndAlso (num3 <= &H39)) OrElse ((num3 >= &H61) AndAlso (num3 <= &H66))) Then str = New StringBuffer().append(str).append(DirectCast(num3, Char)).ToString If (StringImpl.length(str) Is 2) Then Dim num4 As Integer = Integer.parseInt(str, &H10) Try stream.write(num4) Catch obj2 As Object When (?) Dim throwable2 As Throwable Dim exception2 As Exception = throwable2 End Try str = "" num2 += 1 Continue Do End If End If Select Case num3 Case &H42 Me.cout(New StringBuffer().append("Flash read of ").append(s).append(" region is complete. Output to file: ").append(s).append(".bin").ToString) Me.send2Serial("close" & ChrW(13)) flag = False goto Label_0249 Case &H43 Do While (Not Me.getSerialByte Is &H3E) Loop num = (num + &H100) num2 = 0 Me.cout(New StringBuffer().append("Read ").append(num).append(" bytes").ToString) goto Label_0249 End Select Loop Loop Try stream.close Catch obj3 As Object When (?) Dim throwable3 As Throwable Dim exception3 As Exception = throwable3 End Try End Sub Public Overridable Function wait4(ByVal w1 As String, ByVal w2 As String, ByVal w3 As String, ByVal w4 As String, ByVal w5 As String) As Integer Dim str As String = "" Dim i As Integer For i = 0 To StringImpl.length(w1) - 1 str = New StringBuffer().append(str).append(" ").ToString Next i Do Dim num2 As Integer = Me.getSerialByte If (num2 Is -1) Then Return num2 End If str = New StringBuffer().append(StringImpl.substring(str, 1)).append(DirectCast(num2, Char)).ToString If StringImpl.equals(str, w1) Then Return 1 End If If ((Not w2 Is Nothing) AndAlso StringImpl.equals(str, w2)) Then Return 2 End If If ((Not w3 Is Nothing) AndAlso StringImpl.equals(str, w3)) Then Return 3 End If If ((Not w4 Is Nothing) AndAlso StringImpl.equals(str, w4)) Then Return 4 End If Loop While ((w5 Is Nothing) OrElse Not StringImpl.equals(str, w5)) Return 5 End Function End Class
|
|
|
En línea
|
|
|
|
carlosguay
Desconectado
Mensajes: 42
|
Te agradezco mucho tus respuestas raul.
Veras yo se que cuesta mucho aprender algo, para que despues llegue alguien pidiendo lo que a uno le a costado años aprender. Yo no quiero que nadie me de algo ya echo, y te puedo decir que me a costado mucho poner este post, aunque no lo creas.
Eso que e puesto, como dije al principio, som trozos de codigo que se, seguro que es lo que necesito, pero no como un programa normal, como esta ese codigo. Osea no com interface, si no como consola, osea eso que hace ese codigo,`pasarlo a consola.
Mi hobiie som los modems, y es para lo que necesito ese codigo, en el foro donde suelo andar, son muchas las preguntas que se responden muchas veces, y eso es desesperante, ver que la gente no lee. Pero como tu sabras, esto que estoy pidiendo, no es que no me guste, pero no es facil de aprender, y no se aprende en dos dias ni mucho menos.
Te agradezco mucho el tiempo dedicado.
un saludo
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Ahh...era de consola? porque no lo aclaraste ( jaja...se me paso xD, pero..... en el codigo hay un "Initialize component", o sea.... el codigo de donde proviene es una aplicacion de windows o.O) Bueno, releyendo el codigo, hay partes de las que copiaste que son de una clase que hereda de algo (la pregunta es de que? y no conozco ninguna clase parecida ), fijate bien de donde lo sacaste y si tiene alguna dependencia (fijate si tiene referencias a alguna dll o los "Imports" de arriba de todo) Hay partes que parecen mezcla de C++ y Vb... de donde sacaron un "Me.cout(..)" Nada de lo que dije fue por criticarte, sino que es para ayudarte a mejorar y aprendas de tus errores, porque de un simple copiar & pegar no se aprende, y ahi tu estas haciendo la diferencia, aunque te rompas el coco por que no te sale lo que quieres....ahi estas haciendo la diferencia...
|
|
|
En línea
|
|
|
|
carlosguay
Desconectado
Mensajes: 42
|
Ya ya se que no era por criticarme, pero me parecio mejor explicarte un poco mis pensamientos y aclararte que de esto estoy totalmente pegado.
Veras todo ese codigo, lo he sacado de demcopilar un programa que tengo, lo que pasa es que ese programa, tiene muchisimos botones, exactamente 14, y te e puesto solo lo que necesito, que som dos botones, una para conectar y el otro hace la lectura de la parte que necesito.
Este programa, no lleva ninguna dll ni ocx, si te puedo decir que necesita el NET.Framework, para que funcione.
Yo e sacado ese codigo como visualbasic, porque creo haber leido que para usar NET, es asin, aunque com el decompilador que tengo puedo sacar el codigo, com el lenguaje que quiera.
Lo de los Imports, no lo comprendo y no se exactamente que necesitarias.
Te puedo decir, que en los dos meses aprosimados que llevo metido en este mundo, he aprendido bastante de batch y de programacion en general, aunque creo que e empezado la casa por el tejado, como se dice por mi tierra y tendria que hacer un curso para novatos aunque sea.
Se que de copiar y pegar no se aprende nada, pero cuanto tardaste tu en saber lo que sabes?.
A mi me encantaria aprender algun lenguaje, pero sinceramente, por la edad que tengo y por lo que llevo leido de programacion, creo que lo que alguien aprenda en un año, yo necesitaria dos años, o mas jejeje.
Pero por supuesto que pienso seguir leyendo sobre programacion, es genial y alomejor algun dia, sea yo quien responda a alguien com sus dudas.
un saludo
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Ya ya se que no era por criticarme, pero me parecio mejor explicarte un poco mis pensamientos y aclararte que de esto estoy totalmente pegado.
Veras todo ese codigo, lo he sacado de demcopilar un programa que tengo, lo que pasa es que ese programa, tiene muchisimos botones, exactamente 14, y te e puesto solo lo que necesito, que som dos botones, una para conectar y el otro hace la lectura de la parte que necesito.
Este programa, no lleva ninguna dll ni ocx, si te puedo decir que necesita el NET.Framework, para que funcione.
Yo e sacado ese codigo como visualbasic, porque creo haber leido que para usar NET, es asin, aunque com el decompilador que tengo puedo sacar el codigo, com el lenguaje que quiera.
Lo de los Imports, no lo comprendo y no se exactamente que necesitarias.
Ok, no lleva ocs, y lo de los Imports indican que parte del .Net framework va a usar el programa (las funciones del framework son muchas y estan separadas por categorias (Nombres de espacio - se llaman con Imports) Ejemplo, si voy a usar Criptografia llamo a System.Criptography (o algo asi..), si voy a usar graficos con GDI llamo a System.Drawing, si llamo a otras DLLs que estan hechas tambien en .net llamo a System.Reflection. con lo cual arriba de todo quedaria Imports System.Criptography Imports System.Drawing Imports System.Reflection
ahora se entiende mejor? Fijate en los programas decompilados cuales son los "Imports" que usa Te puedo decir, que en los dos meses aprosimados que llevo metido en este mundo, he aprendido bastante de batch y de programacion en general, aunque creo que e empezado la casa por el tejado, como se dice por mi tierra y tendria que hacer un curso para novatos aunque sea.
Se que de copiar y pegar no se aprende nada, pero cuanto tardaste tu en saber lo que sabes?.
A mi me encantaria aprender algun lenguaje, pero sinceramente, por la edad que tengo y por lo que llevo leido de programacion, creo que lo que alguien aprenda en un año, yo necesitaria dos años, o mas jejeje.
Pero por supuesto que pienso seguir leyendo sobre programacion, es genial y alomejor algun dia, sea yo quien responda a alguien com sus dudas.
un saludo
Todos pueden programar, no es necesario ser un genio para eso (nadie nacio sabiendo). Yo llevo dentro de este mundo casi 6 años, y tambien estuve como vos, viendo codigos de diversas paginas para juntarlos y hacer algo mio y luego (como sea) cambiar todo, algunas veces salieron, otras no. Es solo cuestion de practicar. Saludos!
|
|
|
En línea
|
|
|
|
carlosguay
Desconectado
Mensajes: 42
|
Te agradezco mucho tu comprexion, ahora esta mas claro todo. En el post inicial, pongo que lo que necesitaria, seria una aplicacion o .exe, que al ejecutarlo haga lo que necesito. Veras antes de hacer ese paso, tengo que hacer otras cosas que ya tengo superadas com el bat, y ya que esa parte no se puede meter dentro del bat, al menos que pudiera ejecutarlo desde el bat, joder cuantos bats. Por eso lo que te comento de conectar, osea el boton de conectar no lo necesitaria, aunque si ves necesita un hosname, que es una IP, que tendria que ponerle, y habia pensado algo como una variable que pudiera introducirla desde el mismo bat, pero por eso no te preocupes que ya pensaria yo algo. Aqui tienes los Imports. Imports System Imports System.ComponentModel Imports System.Drawing Imports System.IO.Ports Imports System.Windows.Forms Imports com.ms.vjsharp.cor Imports com.ms.vjsharp.lang Imports java.io Imports java.lang Imports java.net Namespace WindowsApplication2 Public Class Form1 Inherits Form
Imports System Imports System.ComponentModel Imports System.Drawing Imports System.Windows.Forms Imports com.ms.vjsharp.cor Imports com.ms.vjsharp.lang Namespace WindowsApplication2 Public Class OffsetDialog Inherits Form
Te pongo las dos cabezeras completas. un saludo
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
visual basic + java ?? o.O Nunca toque java, sera el momento de aprender Bueno, lo que tienes que hacer en tu proyecto, es nombrar los "Imports" que tienen esos 2 archivos (sin reptetir).... o sea...mira..en el archivo 1 tienes Imports System Imports System.ComponentModel Imports System.Drawing Imports System.IO.Portsy en el archivo 2 tienes Imports System Imports System.ComponentModel Imports System.Drawing Imports System.Windows.FormsEntonces en tu archivo que uniste todo, quedaria Imports System Imports System.ComponentModel Imports System.Drawing Imports System.Windows.Forms Imports System.IO.Portsentiendes??? ahora haz eso con las 2 listas que pusiste arriba. Ademas, en el explorador de soluciones (la ventana donde esta el proyecto) veras una carpeta gris llamada "Referencias". Hazle click derecho y elige "Agregar Referencia" En la lista que sale en una nueva ventana busca y marca estos items Imports com.ms.vjsharp.cor Imports com.ms.vjsharp.lang Imports java.io Imports java.lang Imports java.net No se si estaran con ese nombre, pero puedes buscar en internt de donde vienen
|
|
|
En línea
|
|
|
|
carlosguay
Desconectado
Mensajes: 42
|
Perdona mi torpeza. Dices en las dos listas?, te refieres a los Imports, porque codigo solo e puesto uno.
Cuando dices que agrege al proyecto, que tengo que intalar visulbasic,? yo como solo es un exe, o consola, habia pensado compilarlo desde NET.Framewor, asin.
csc Prueba.cs o
vbs Prueba.vb
Y otra cosa, a ese codigo que pongo, para que sea por consola, le sobraran cosas, no?
Como ves estoy algo liadillo, jeje.
un saludo
|
|
|
En línea
|
|
|
|
|
|