SciLor's Open Source Forums

Also visit my Website!
It is currently Sun May 19, 2019 2:35 pm

All times are UTC + 1 hour [ DST ]




Post new topic Reply to topic  [ 11 posts ]  Go to page 1, 2  Next

Sounds that interesting?
Yes, of course. This can beat many paid software 50%  50%  [ 1 ]
Yes, nice idea. 0%  0%  [ 0 ]
Nothing special... 0%  0%  [ 0 ]
No, that will be useless 50%  50%  [ 1 ]
Total votes : 2
Author Message
PostPosted: Tue Mar 30, 2010 2:12 am 
Offline
The Developer

Joined: Wed Jan 13, 2010 11:56 pm
Posts: 1466
Donated: free software
Hello friends of my SciLor's WiMoBlue,

I am currently rewriting nearly everything to extend it to a very powerful, extendable remote controlling tool.

You will be able to use TCP/IP and of cause the old Bluetooth way to connect your Devices/Computers.
The Base-Program can send/recieve Keyboard/Mouse Input and will also serve you a screenshot of the other device. All that on a very simple, secure and fast codebase.

Due to it allows you to extend SciLor's WiMoBlue with your own plugins it may get endless features.
Here some things you will be able to do :)

  • Manipulate KeyCodes, MouseData
  • Create Macros, based on a single keypress
  • Fix weird ppc-keyboard events (Ex. HTC Kaiser) to make it usable for games etc.
  • Send custom data from/to you devices, ex. Device Information/Active Processes, File Transfer
  • Hook up data that will be send/ is just recieved, perfect for encrypting your datastream
  • Save Screenshots/Videos
  • Convert g-sensor data into key input
  • Open your mind, may be everything

Here is source of the upcoming Interfaces you may use for your Plugins (It may change till the release)
Code:
Imports System.Windows.Forms
Imports System.Drawing
Imports SciLors_WiMoBlue_DLL_v2

Public Class Plugin
    Public Interface IKeySenderPlugin 'Handles the incomming KeyCodes and sorts out the needed KeyEvents and pushes them to the WiMoBlue's SendKey
        Sub Initialize(ByVal Host As IPluginHost)
        Sub KeySenderDown(ByVal myKeyCode As Short)
        Sub KeySenderPress(ByVal myKeyCode As Short)
        Sub KeySenderUp(ByVal myKeyCode As Short)
    End Interface 'There can be only one plugin of this type at once, controller only

    Public Interface IKeyConvertPlugin 'All KeyCodes go through here. You may manipulate them or you may create macros in here. If you set the KeyCode to WiMoBlueDLLv2.KeyIgnore, the key is ignored.
        Sub Initialize(ByVal Host As IPluginHost)
        Function KeyConvert(ByVal KeyCode As Short, ByVal KeyState As WiMoBlueDLLv2.PluginKeyStruc) As Short
    End Interface 'There can be multiple plugins of this type, controller only

    Public Interface IMouseSenderPlugin 'See IKeySenderPlugin, just for the mouse
        Sub Initialize(ByVal Host As IPluginHost)
        Sub MouseSenderDown(ByVal myMouseInfo As MouseEventArgs)
        Sub MouseSenderMove(ByVal myMouseInfo As MouseEventArgs)
        Sub MouseSenderUp(ByVal myMouseInfo As MouseEventArgs)
    End Interface 'There can be only one plugin of this type at once, controller only

    Public Interface IMouseConvertPlugin 'See IKeyConvertPlugin, just for the mouse
        Sub Initialize(ByVal Host As IPluginHost)
        Function MouseConvert(ByVal myMouseInfo As MouseEventArgs, ByVal MouseState As WiMoBlueDLLv2.PluginMouseStruc) As MouseEventArgs
    End Interface 'There can be multiple plugins of this type, controller only

    Public Interface IDataPlugin 'Recieves and handles Data for a custom data plugin. You may send data back over WiMoBlue's SendPluginData
        Sub Initialize(ByVal Host As IPluginHost)
        Property GlobalPluginID() As Byte
        Sub RecievePluginData(ByVal Data As Byte(), ByVal PluginCommand As Byte)
    End Interface 'There can be multiple plugins of this type, server/controller

    Public Interface IHookSendPlugin 'Hooks just before the WiMoBlue's SendData function, for manipulating the raw data (ex. Encryption).
        Sub Initialize(ByVal Host As IPluginHost)
        Function CatchSendData(ByVal Data As Byte(), ByVal Base As Byte, ByVal Command As Byte)
        Function CatchSendData(ByVal Data As Byte(), ByVal Base As Byte, ByVal Command As Byte, ByVal Plugin As Byte, ByVal PluginCommand As Byte)
        Function CatchRecieveData(ByVal Data As Byte())
    End Interface 'There can be multiple plugins of this type, server/controller

    Public Interface IPluginInfo
        ReadOnly Property Name() As String
        ReadOnly Property Version() As String
        ReadOnly Property Info() As String

        ReadOnly Property AvailableConfigEntries() As IList(Of WiMoBlueDLLv2.PluginConfigEntry) 'Serves all available ConfigEntries, including standard values of them.
        Property ConfigEntries() As IList(Of WiMoBlueDLLv2.PluginConfigEntry) 'Serves all available ConfigEntries

    End Interface

    Public Interface IPluginHost 'You may call/use these Functions/Propertys for you plugin. They are served by WiMiBlue.
        Sub SendKey(ByVal KeyCode As Keys, ByVal State As WiMoBlueDLLv2.KeyStruc) 'for IKeySenderPlugin
        Sub SendMouse(ByVal MouseCode As MouseButtons, ByVal State As WiMoBlueDLLv2.MouseStruc, ByVal MousePos As Point) 'for IMouseSenderPlugin
        Sub SendPluginData(ByVal Data As Byte(), ByVal Plugin As Byte, ByVal PluginCommand As Byte) 'for IDataPlugin
        Sub ExecuteCommand(ByVal MainGroup As Byte, ByVal MainCommand As Byte, ByVal RecieveBuffer() As Byte) 'for IHookSendPlugin
        'The named Interfaces are only suggestions, feel free to mix them up in your way

        Function LoadPluginConfig(ByVal AssemblyFileName As String, ByVal AvailableConfig As IList(Of WiMoBlueDLLv2.PluginConfigEntry)) As IList(Of WiMoBlueDLLv2.PluginConfigEntry) 'Get the config data list, if it is emtpy, the AvailableConfig is used. If the existing config is not emtpy, all existing entries(Of the stored config) are preserved and filled up with non existing entries of the AvailableConfig.
        Sub SavePluginConfig(ByVal AssemblyFileName As String, ByVal Config As IList(Of WiMoBlueDLLv2.PluginConfigEntry)) 'Save the config

        ReadOnly Property PluginInfoSize() As Byte
        ReadOnly Property MaxChunkSize() As Integer 'The maximal data package size send at once. You should substract it by 'PluginInfoSize' if you use the 'SendPluginData' function
        'You should split it up when it is larger. You may overlap it some bytes for encryption only!

     End Interface
End Class


And here is an example Plugin that handles the HTC Kaiser's weird keyboard behaviour and fixes that for gaming purposes:
Code:
Imports SciLors_WiMoBlue_DLL_v2

Public Class WiMoBluePlugin
    Implements Plugin.IKeySenderPlugin
    Implements Plugin.IPluginInfo

    Private objHost As Plugin.IPluginHost

    Private isPressed(255) As Boolean
    Private processKey(15) As Byte
    Private maxProcess As Byte = 0

    Public Sub Initialize(ByVal Host As Plugin.IPluginHost) Implements Plugin.IKeySenderPlugin.Initialize
        objHost = Host
    End Sub

    Private Sub KeySenderDown(ByVal myKeyCode As Short) Implements Plugin.IKeySenderPlugin.KeySenderDown
        If isPressed(myKeyCode) = False Then
            If myKeyCode <> 229 And myKeyCode <> 132 Then
                objHost.SendKey(myKeyCode, WiMoBlueDLLv2.KeyStruc.KeyDown)
            End If
            isPressed(myKeyCode) = True
            'Debug.WriteLine("KeyDown: " & ChrW(KeyCode) & Chr(KeyCode) & "-" & KeyCode)
        End If
    End Sub
    Private Sub KeySenderPress(ByVal myKeyCode As Short) Implements Plugin.IKeySenderPlugin.KeySenderPress
        If isPressed(myKeyCode) = False Then
            If myKeyCode <> 229 And myKeyCode <> 132 And maxProcess < processKey.Length Then
                objHost.SendKey(myKeyCode, WiMoBlueDLLv2.KeyStruc.KeyDown)
                isPressed(229) = True
                isPressed(myKeyCode) = True
                processKey(maxProcess) = myKeyCode
                maxProcess += 1
            End If
            'Debug.WriteLine("KeyPress: " & ChrW(KeyCode) & Chr(KeyCode) & "-" & KeyCode)
        End If
    End Sub
    Private Sub KeySenderUp(ByVal myKeyCode As Short) Implements Plugin.IKeySenderPlugin.KeySenderUp
        If isPressed(myKeyCode) = True Then
            If myKeyCode <> 229 And myKeyCode <> 132 Then
                objHost.SendKey(myKeyCode, WiMoBlueDLLv2.KeyStruc.KeyUp)
                isPressed(myKeyCode) = False
            ElseIf myKeyCode = 229 Then
                If maxProcess = 1 Then 'Gaming Mod
                    objHost.SendKey(processKey(0), WiMoBlueDLLv2.KeyStruc.KeyUp)
                    isPressed(processKey(0)) = False
                    processKey(0) = 0
                    maxProcess = 0
                    isPressed(myKeyCode) = False
                ElseIf maxProcess > 1 Then
                    For I = 1 To maxProcess - 1
                        objHost.SendKey(processKey(I), WiMoBlueDLLv2.KeyStruc.KeyUp)
                        isPressed(processKey(I)) = False
                        processKey(I) = 0
                    Next
                    maxProcess = 1
                End If
            End If
            'Debug.WriteLine("KeyUp: " & ChrW(KeyCode) & Chr(KeyCode) & "-" & KeyCode)
        End If
    End Sub

    Public ReadOnly Property Name() As String Implements Plugin.IPluginInfo.Name
        Get
            Return "SciLor's Gaming Key Sender"
        End Get
    End Property

    Public ReadOnly Property Info() As String Implements Plugin.IPluginInfo.Info
        Get
            Return "This is a plugin especially for gaming purposes on mobile devices, that tries to solve several problems, for example multiple button pressing."
        End Get
    End Property

    Public ReadOnly Property Version() As String Implements Plugin.IPluginInfo.Version
        Get
            Return "v1"
        End Get
    End Property

    Public ReadOnly Property AvailableConfigEntries() As IList(Of WiMoBlueDLLv2.PluginConfigEntry) Implements Plugin.IPluginInfo.AvailableConfigEntries
        Get
            Return New List(Of WiMoBlueDLLv2.PluginConfigEntry)
        End Get
    End Property


End Class


If you want to start creating plugins, feel free to post them here. Till the release you may need to make small changed to your plugins because the interfaces can change until the final release

_________________
My Windows Mobile and Windows Open Source Website:
www.scilor.com

Like my work? Donate!
Donation Website

My Programs:
grooveshark™.com Downloader, GrooveMobile, Fuel Blaster, Chameleon TicTacToe, QuickTap, WiMoBlue, Driving Licence Trainer, CodeSnippetViewer, Gesture Launcher, Fahrplanauskunft, GSensor Control


Last edited by SciLor on Sun Apr 18, 2010 9:59 am, edited 3 times in total.
Changed some descriptions and support of multiple Send/Recieve Hooks


Top
 Profile  
 
 
Online
The Adswinger

Joined: Wed Jan 13, 2010 11:56 pm
Posts: Too many!
Donated: Ad Posts


PostPosted: Thu May 20, 2010 9:40 pm 
Hi

You are saying that your apps are Open Source. Are you providing sources of them somewhere?
Is there a possibility to get them?

best regards
SlaV


Top
  
 
PostPosted: Thu May 20, 2010 9:53 pm 
Offline
The Developer

Joined: Wed Jan 13, 2010 11:56 pm
Posts: 1466
Donated: free software
Most of my Applications are open source, but for most programs I am to lazy to publish it (Due to I release a new version once a while). If you mean my SciLor's WiMoBlue I would just make a package for you, but due to I am currently recoding it, it is useless for you because it isn't the original source of SciLor's WiMoBlue v0.0.1.

I may rename my website soon, but source will be available from time to time.

For some other software I do not want to publish the source for some special reasons. If you need any advice in coding, just open a thread here: viewforum.php?f=131 (WM) viewforum.php?f=133 (Windows). You may also request some source there.

_________________
My Windows Mobile and Windows Open Source Website:
www.scilor.com

Like my work? Donate!
Donation Website

My Programs:
grooveshark™.com Downloader, GrooveMobile, Fuel Blaster, Chameleon TicTacToe, QuickTap, WiMoBlue, Driving Licence Trainer, CodeSnippetViewer, Gesture Launcher, Fahrplanauskunft, GSensor Control


Top
 Profile  
 
PostPosted: Thu May 20, 2010 10:39 pm 
I think, that even not fully working sources would be helpfull for me. I'd like to use it to write small app for myself. I could do it fully by myself, but because of lack of free time using your ideas would be much better ;)
so if it is possible, then a would be very gratefull for a small package for me ;) (my email address should be known for you I think).

If you wouldn't like to share your sources it's ok, I understand it :)


Top
  
 
PostPosted: Thu May 20, 2010 10:46 pm 
Offline
The Developer

Joined: Wed Jan 13, 2010 11:56 pm
Posts: 1466
Donated: free software
What do you want to do exactly? Connect via Bluetooth and send/recieve data/?

_________________
My Windows Mobile and Windows Open Source Website:
www.scilor.com

Like my work? Donate!
Donation Website

My Programs:
grooveshark™.com Downloader, GrooveMobile, Fuel Blaster, Chameleon TicTacToe, QuickTap, WiMoBlue, Driving Licence Trainer, CodeSnippetViewer, Gesture Launcher, Fahrplanauskunft, GSensor Control


Top
 Profile  
 
PostPosted: Thu May 20, 2010 11:12 pm 
yeap - exactly that :) I'd like to write small remote controller to controll my fav apps on PC from WM. So I need to get know how to connect over BT, send key shortcut throw it (for example alt+tab, etc), receive it on pc and ""press it"


Top
  
 
PostPosted: Fri May 21, 2010 4:17 pm 
Offline
The Developer

Joined: Wed Jan 13, 2010 11:56 pm
Posts: 1466
Donated: free software
First of all you will need the InTheHand Bluetooth API http://inthehand.com/

In vb.net you will need a listener and a client
Code:
    Private btClient As New BluetoothClient
    Private btListener As New BluetoothListener(ServiceName)


You will also need a Thread to keep your program available while waiting for a bluetooth connection/commands
Code:
Private BroadcastThread As Thread
Private RecieveThread As Thread


To find clients you will need to search for your devices:
Code:
btClient.DiscoverDevices(20)


To Connect to the other device you will have to do following:
Code:
                btClient = New BluetoothClient()
                btClient.Connect(New BluetoothEndPoint(DirectCast(Device, BluetoothAddress), ServiceName))
                If btClient.Connected = True Then
                    DataStream = btClient.GetStream
                    BinReader = New BinaryReader(DataStream)
                    BinWriter = New BinaryWriter(DataStream)
                    RecieveThread = New Thread(AddressOf RecieveData)


Then you will have to run your RecieveThread and to get your data, you will need to do following:
Code:
        Dim myHeader(3) As Byte
        Dim DataLength As Integer
        RaiseEvent ConnectionRecieved()
        While isRecieving = True
            Try
                myHeader = BinReader.ReadBytes(
'Your Commands!
            Catch ex As Exception
                Debug.WriteLine(ex.Message)
                If myHeader.Length = 0 Or ex.Message = "Unable to read data from the transport connection." Then
                    Exit While
                End If
            End Try
        End While


You will also need a "Server" part that is waiting for your clients connection, You need your btListener.Start
Code:
       Dim myHeader(3) As Byte
        Dim DataLength As Integer

            btListener.Start()

        While isRecieving = True
            Try
                    btClient = btListener.AcceptBluetoothClient()
                    DataStream = btClient.GetStream()
                BinReader = New BinaryReader(DataStream)
                BinWriter = New BinaryWriter(DataStream)
            Catch
                Exit While
            End Try
            RaiseEvent ConnectionRecieved()
            While isRecieving = True
                Try
                    myHeader = BinReader.ReadBytes(
'Your Commands!
                Catch ex As Exception
                    Debug.WriteLine(ex.Message)
                    If myHeader.Length = 0 Then
                        Exit While
                    End If
                End Try
            End While
            Try
                    btClient.Close()
            Catch ex As Exception
                Debug.WriteLine(ex.Message)
            End Try
            RaiseEvent ConnectionLoss()
        End While
        RaiseEvent ConnectionLoss()
            btListener.Stop()


I hope that is all you needed :) If you need any further advice please open a new Thread in a fitting Coders forum in my board!

Later on you are welcome to write a plugin for my upcomming SciLor's WiMoBlue v2!

_________________
My Windows Mobile and Windows Open Source Website:
www.scilor.com

Like my work? Donate!
Donation Website

My Programs:
grooveshark™.com Downloader, GrooveMobile, Fuel Blaster, Chameleon TicTacToe, QuickTap, WiMoBlue, Driving Licence Trainer, CodeSnippetViewer, Gesture Launcher, Fahrplanauskunft, GSensor Control


Top
 Profile  
 
PostPosted: Fri May 21, 2010 4:39 pm 
thanks!
I will write it in C# but those pieces of code will help me a lot :)

Please inform me when you will end developing (per email would be the best way) and then I will try to make a plugin :)
BR
SlaV


Top
  
 
PostPosted: Fri May 21, 2010 4:48 pm 
Offline
The Developer

Joined: Wed Jan 13, 2010 11:56 pm
Posts: 1466
Donated: free software
You will get a message if it is ready :)

Please inform me if you are ready :D

_________________
My Windows Mobile and Windows Open Source Website:
www.scilor.com

Like my work? Donate!
Donation Website

My Programs:
grooveshark™.com Downloader, GrooveMobile, Fuel Blaster, Chameleon TicTacToe, QuickTap, WiMoBlue, Driving Licence Trainer, CodeSnippetViewer, Gesture Launcher, Fahrplanauskunft, GSensor Control


Top
 Profile  
 
PostPosted: Mon May 31, 2010 7:36 pm 
Hi

Unfortunatelly I've stopped developing...
I've found free app that have got everything that I needed...

But as I said, I will try to write a little plugin for you ;)

BR
SlaV


Top
  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 11 posts ]  Go to page 1, 2  Next

All times are UTC + 1 hour [ DST ]


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
template->_php_include(): File ./counter/foruminclude.php does not exist or is empty Powered by phpBB® Forum Software © phpBB Group