Spanish Problema empezando a programar envio/recepcion TCP/IP Socket

psdos

Active Member
Licensed User
Longtime User
Hola compañeros, pues vereis en mi segunda aplicacion que estoy haciendo pretendo controlar desde un Galaxy Note una tarjeta de control TCP/IP, por si alguno tuviera curiosidad es esta concretamente.

Denkovi Assembly Electronics ltd: Wi-Fi IEEE 802.11 b/g Data Acquisition I/O Module

Bueno, el caso es que usando Astream, si he logrado enviarle Sockets para que active los reles, aunque he de decir que no siempre responde rapido, y se que no es un tema de la tarjeta.

Mi dilema es que esta tarjeta cada vez que le envio un Socket, ella responde con el estado, algo asi como un ACK.

Ejemplo:

Set all relays (Whole PortA) ON. Actually all the DO are in high level.
Send: 00ASG=FFFF;
Receive: 00AS0=0;

Si alguien fuera tan amable de indicarme donde encontrar un ejemplo claro donde se vea como enviar/recibir estos datos. Ademas esta tarjeta tiene la posibilidad de usar RC4 como metodo de encriptacio, a ver si alguien me dice si es posible usarlo en b4a.

Un saludo y mil gracias por adelantado.
 
Last edited:

psdos

Active Member
Licensed User
Longtime User
He encontrado el codigo para usar RC4 en VB.NET, si algun usuario con mucha experiencia fuera tan amable de indicarme los ajustes y cambios para pasarlo a B4A, le estaria eternamente agradecido.

B4X:
Imports System.Text



Public Shared Function rc4(ByVal message As String, ByVal password As String) As String

        Dim i As Integer = 0
        Dim j As Integer = 0
        Dim cipher As New StringBuilder
        Dim returnCipher As String = String.Empty

        Dim sbox As Integer() = New Integer(256) {}
        Dim key As Integer() = New Integer(256) {}

        Dim intLength As Integer = password.Length

        Dim a As Integer = 0
        While a <= 255

            Dim ctmp As Char = (password.Substring((a Mod intLength), 1).ToCharArray()(0))

            key(a) = Microsoft.VisualBasic.Strings.Asc(ctmp)
            sbox(a) = a
            System.Math.Max(System.Threading.Interlocked.Increment(a), a - 1)
        End While

        Dim x As Integer = 0

        Dim b As Integer = 0
        While b <= 255
            x = (x + sbox(b) + key(b)) Mod 256
            Dim tempSwap As Integer = sbox(b)
            sbox(b) = sbox(x)
            sbox(x) = tempSwap
            System.Math.Max(System.Threading.Interlocked.Increment(b), b - 1)
        End While

        a = 1

        While a <= message.Length

            Dim itmp As Integer = 0

            i = (i + 1) Mod 256
            j = (j + sbox(i)) Mod 256
            itmp = sbox(i)
            sbox(i) = sbox(j)
            sbox(j) = itmp

            Dim k As Integer = sbox((sbox(i) + sbox(j)) Mod 256)

            Dim ctmp As Char = message.Substring(a - 1, 1).ToCharArray()(0)

            itmp = Asc(ctmp)

            Dim cipherby As Integer = itmp Xor k

            cipher.Append(Chr(cipherby))
            System.Math.Max(System.Threading.Interlocked.Increment(a), a - 1)
        End While

        returnCipher = cipher.ToString
        cipher.Length = 0

        Return returnCipher

    End Function







How to use source:

rc4("Text","password")
 
Last edited:

psdos

Active Member
Licensed User
Longtime User
La verdad es que poder controlar algo a distancia, desde la otra parte del mundo si hace falta, cuando poco, mola jeje. Ahora JorgeMC me gustaria sacarle el maximo partido, a ver si esa rutina de uso de RC4 en VB.NET la podemos pasar a B4A, ya que esta placa controladora da esa opcion tambien, pero al parecer la libreria que hay de encriptacion no soporta RC4.

Un saludo.
 
Last edited:

Caronte

Member
Licensed User
Longtime User
...tarjeta de control TCP/IP, por si alguno tuviera curiosidad es esta concretamente.
Denkovi Assembly Electronics ltd: Wi-Fi IEEE 802.11 b/g Data Acquisition I/O Module

Interesante :)
Yo estoy buscando algo similar, pero para el standard X10, así no hace falta llenar la casa de cables para controlar cosas.
Si alguien sabe de algún modulo que pueda recibir y enviar los comandos X10 que recibe por tcp/ip, le agradecería la info sobre donde comprarlo (que envíen a España) ;)
 

psdos

Active Member
Licensed User
Longtime User
Caronte, lo que tu andas buscando es un control domotico de una vivienda. Hay varias marcas que trabajan con estas cosas, el problema es que usan softwares propios, y nada baratos dicho sea de paso.

Te paso algunas de las webs que yo recopile en su dia y comentarte que en el mundo de la domotica la marca KNX es una de las mejores, miratela.

MANDO 8 EN 1 CON CONTROL X10
iDôm, nueva aplicación de domótica para el iPad-freeDom Ingenieria Domotica y Telecomunicaciones
DomoPrac - Domotica practica paso a paso
CASADOMO | El Portal del Hogar y Edificio Digital
Domótica - Domotica365.com
Control Systems for Home Automation, Campus & Building Control by Crestron Electronics
Quality Recorders -* Shipped overnight!* Free Trial!
8-Channel Web Enabled DIN Relay from $119!* Ships now, free trial.

Un saludo.
 

psdos

Active Member
Licensed User
Longtime User
Problema resulto, aqui posteo el código para usar codificacion RC4 pasado de VB.NET a B4A.

B4X:
Sub rc4(message As String, password As String) As String

      Dim i As Int
      i = 0
        Dim j As Int
      j = 0
        Dim cipher As StringBuilder
      cipher.Initialize
        Dim returnCipher As String
      returnCipher = ""
      
        Dim sbox(256) As Int
        Dim key(256) As Int

        Dim intLength As Int
      intLength = password.Length

        Dim a As Int
      a = 0
        Do While a <= 255

            Dim ctmp As Char
         ctmp = password.SubString(a Mod intLength)
            key(a) = Asc(ctmp)
            sbox(a) = a
            a = a + 1
        Loop

        Dim x As Int
      x = 0

        Dim b As Int
      b = 0
        Do While b <= 255
            x = (x + sbox(b) + key(b)) Mod 256
            Dim tempSwap As Int
         tempSwap = sbox(b)
            sbox(b) = sbox(x)
            sbox(x) = tempSwap
            b = b + 1
          Loop

        a = 1

        Do While a <= message.Length

            Dim itmp As Int
         itmp = 0

            i = (i + 1) Mod 256
            j = (j + sbox(i)) Mod 256
            itmp = sbox(i)
            sbox(i) = sbox(j)
            sbox(j) = itmp

            Dim k As Int
         k = sbox((sbox(i) + sbox(j)) Mod 256)

            Dim ctmp As Char
         ctmp = message.Substring(a - 1)

            itmp = Asc(ctmp)

            Dim cipherby As Int
         cipherby = Bit.Xor(itmp, k)

            cipher.Append(Chr(cipherby))
            a = a + 1
        Loop

        returnCipher = cipher.ToString
       
      Return returnCipher

    End Sub


Un saludo y que lo disfruteis quienes lo usen.
 

Caronte

Member
Licensed User
Longtime User
Muchas gracias por los links.
Igual no me he explicado bien... Sé lo que es la domótica, el problema no es ese, ni tampoco que el soft para el usuario final sea caro, porque el soft no lo pienso usar, sino que lo pretendo programar yo (je, je, de eso va este foro ¿no?), el problema es encontrar un emisor/receptor de señales X10 que acepte ordenes a través de tcp/ip (no por USB/etc…) porque lo que pretendo es conectar el módulo directamente a un router para no tener el ordenador siempre en marcha, ya que no me sirven las macros preprogramadas, porque mi soft estará en el móvil y necesito acceso en tiempo real en cualquier momento y lugar.

Pues eso, voy a echar un vistazo a esos links, que alguno no lo conocía, a ver si hay suerte.

Thanks again ;)
 

psdos

Active Member
Licensed User
Longtime User
Te he entendido perfectamente Caronte, lo que si te digo es una cosa, X10 esta ya muy desfasada. Intenta buscar otra alternativa, por ejemplo equipos que usen tecnologia PCL.

Aqui te dejo un link donde te explican brevemente las diferencias que hay entre los 3 mas extendidos, entre los que esta el X10 que tu quieres usar.

Diferencias entre sistemas de domótica KNX, X10 y PLC

Un saludo.
 

Caronte

Member
Licensed User
Longtime User
Pfff! vaya rollete, si no me equivoco, por lo que he podido entender, el KNX es centralizado, así que no me sirve para mi proyecto personal y además lo veo muy enfocado a grandes fabricantes, no he encontrado ni un solo sitio que venda kits o similares para "hágaselo usted mismo", solo soluciones completas para usuarios finales y pastosos que se limitan a lo que les permite lo que les instalan.

En resumidas cuentas si no encuentro nada mejor, al final montaré un ordenador lo más barato y de bajo consumo posible y lo usaré como controlador de un modulo CM15 que aunque X10 sea tecnología más vieja, pienso que me sobra, porque lo interesante va a estar en el soft.

Gracias por la info ;)
 

psdos

Active Member
Licensed User
Longtime User
Tienes tambien otra alternativa ahora que lo pienso. El envio/recepcion de datos por corrientes portadoras no es algo nuevo, cuando yo estudiaba electronica haya por los años 90 ya se usaban. Podrias buscar en foros de electronica y microntroladores PIC, algun proyecto interesante y adaptarlo a tus necesidades, fijo que los hay... Y mas barato que eso, nada.

Un saludo.
 
Last edited:

Caronte

Member
Licensed User
Longtime User
No lo había pensado, echaré un vistazo por ahí a ver si hay algo que no sea muy complicado para mi limitada experiencia montando circuitillos ;)

P.D: Je, je… yo estudié electrónica allá por el año 80 y en lugar de chips habían lamparas de vacío, así que lo más que conseguí fue montar una radio y poco más ;)
 

psdos

Active Member
Licensed User
Longtime User
Si quieres te puedo recomendar software que hay para programar PICs en Basic tambien, e incluso un soft que te simula tus montajes antes de hacerlo de verdad, cargando y todo el codigo que hayas desarroyado en Basic. Si te interesa dimelo y te pego la info.

Un saludo.
 

Caronte

Member
Licensed User
Longtime User
Gracias por tu ayuda, si al final me decido por lo de las PIC, te pego un toque ;)
 

tornado64

New Member
Licensed User
Longtime User
Hola.

Este hilo tiene ya unos dias pero igual no has encontrado nada todavia.

No se si sabes que son los arduino.

Mirate esta página:

Arduino - Wikipedia, la enciclopedia libre

Arduino - HomePage

Tiene entradas y salida muy faciles de programar, por algun lado he leido que hay una librerias que le permiten comunicar con el sistema X10.
Asimismo el propio arduino se puede conectar a internet facilmente.

Yo tengo un sistema domótico en casa basado en un ordenador pero si fuese ahora probablemente lo haria con uno o varios arduinos.

Ahora estoy aprendiendo B4A precisamente para controlar mi casa via android.
 
Top