SlotForum banner
21 - 40 of 40 Posts
Discussion starter · #21 ·
QUOTE (Razamanaz @ 16 Oct 2012, 10:28) <{POST_SNAPBACK}>RazManager will contain a lot of configuration. But instead of having a few configuration screens with a lot of tasks in them, there will be rather many configuration screens but with only one or very few tasks in them. These configuration screens follows a user interface model known as inductive user interface. It basically means that it should be very easy to understand what a screen is used for. One part of accomplish this is to focus on a single task, and trying not to do too much in the same screen. Though that may not always be productive for someone that uses an application most of the day, it makes an application like a RMS program easier to use where you really don't go into the configuration screens that often. RazManager also follows the Windows User Experience Interaction Guidelines for Windows 7 and Windows Vista, so you should feel familiar with how the screens are used in general.
Here are some examples from how it currently looks. The screenshot below shows a list of cars:

Image


The look and feel of this list is close to Windows Explorer and a lot of control panel lists in Windows 7 and the desktop mode in Windows 8. The screenshots in this post are from a Windows 8 PC, that's the reason for the "flat" look. When the program is run on a Windows 7 PC, the screens adjusts themselves and you'll get more chrome-like buttons with a bit more depth-look, etc.

To look good, the 3D presentation during a race is dependent upon pictures, e.g. car pictures. You will probably most often have a picture for each of your cars, and the list uses a picture to identify a car. As you can do in Windows itself, you can choose the size of the pictures in the list. But you can also show a list without any pictures at all.

From the list of cars, you can select a car to get more information about it:

Image


The exact contents of this screen will change, so don't read too much into it about RazManager's functionality.

As mentioned earlier, one way to make all configuration understandable is to split tasks into separate screens and not try to do too much in every screen. An additional way is to simply not present options that are irrelevant. If you only are using one track system, and that track system is analog, then there's no need to present options that are only for relevant for digital track systems. With only one track system in use, there's even no point in selecting the track system for a car. In this case the car screen automatically adopts to this, and fewer options are presented:

Image


The size of the fuel tank needs to be entered (directly or indirectly) if you want to use fuel simulation for a digital track. But fuel simulation isn't relevant for an analog track, and therefore not shown in the example above.

I.e, I assume that nobody is interested in fuel simulation for an analog track. I've seen some other RMS programs supporting it, but I've never seen anyone using it. IMHO, fuel simulation only based on lap times doesn't add any tactics that makes the driving more interesting, but I might of course be wrong. Anyone who have used it, and can explain in some detail how it made the races more fun? Maybe fuel stops in analog racing are used as an opportunity to change drivers when team racing, or as an opportunity to get another beer?
 
What is the current status of this project, because I'm really interested in it.
I looked many times this year on this forum to see if there was a status update of this project. But still no more updates.

Is there somewhere a version to download and test? So I'm able to compare it to eg pclapcounter, because that is the program I use now on my track.
 
Discussion starter · #23 ·
QUOTE (Razamanaz) <{POST_SNAPBACK}>&#8230; and how much effort I need put into preparing for my 50-years birthday party at the end of August (which involves arranging a big rock/pop concert in the garden, practicing drums, programming some backing tracks, programming the light show&#8230;
But my current guess is that the first public release of RazManager will be somewhere at the end of 2013.
Image


Above is a picture of me behind my drum kit at my 50 years party. Since then, I've spent a lot of time on RazManager, but no, there won't be a preview released before the end of the year&#8230;

The 3D screens can of course be configured with your own images. Here's another example (I hope my favourite slot car supplier doesn't mind that I've borrowed some images):

Image


However, to be able to use the same 3D source code for the Windows 7/Vista, Windows Store 8 and Windows Phone 8 clients, I will need to re-write all my previous 3D code and switch to some other 3D programming framework, probably MonoGame.

I've spent a lot of time learning how to write Windows Store 8 apps, but these types of apps haven't yet had the success that both I and Microsoft had hoped for. Here are some screenshots from my current prototype:

Image


Image


In my professional assignments and on the client side, I have mostly developed Windows (desktop) clients. Most new applications have a web client instead, so I've had to spend a lot of time learning these techniques instead. The positive side of that is that I will develop web clients for RazManager a lot earlier than I initially thought, this is actually what I'm currently focusing on.

On the server side, I've changed the web service technique from WCF (SOAP/XML) to ASP.NET Web API (REST and some RPC-type methods, JSON or XML format depending upon what the client requests). Among other things, it will make it easier for others to develop their own clients, e.g. iOS and Android apps.

Here's an updated example of how a multi-user and multi-client installation might look like:

Image


I'm not sure if there will be a Windows XP client or not. Probably not, it takes a bit too much time to convert the code from the Windows 7/Vista client, and as there will be web clients earlier than I initially thought, they are an alternative of you still are using Windows XP. Another solution might be if someone else ports the Windows 7/Vista .NET 4.5 client code to Windows XP .NET 4 once the code is released.

In summary, I still have a lot to do. My initial idea was to first release RazManager with a Windows client, and then continue to work on the other clients. But this as changed to develop all clients in parallel, which of course takes a lot of time to both learn and complete.

On the positive side though, it has worked very well for me to use RazManager as a platform for learning and trying out new techniques, my main goal really, and that's one very good reason for me to invest a lot of time into it. But since a specific release date isn't really a goal, I shouldn't make any more guesstimates on when you will be able to try it. But I'll get there some day&#8230;

If you want more technical information, you'll find that at the preliminary RazManager home page.
 
Hi
Looks like a very promising program,one thing I would like to see though is the option to have the Arduino board to do what the phidget and parallel port are doing.

Top spec Arduino has 54 I/o pins and be purchased for as little as £13,the phidget board only has 16 I/o pins and is over £75,parallel ports are now none existent unless you opt for an off board one and they are also pricey.

Looking forward to trying a release out.
Image
 
Yes, I agree. I would like to use Arduino boards together with RazManager for the same reasons as you mention.

Also, a Phidget card is a bit slow; it takes a sample every 1/125 s. That's not fast enough if you want to have lap times with an accuracy of more than two decimal digits for your analogue track.

Though from a RMS developer's perspective, a Phidget card has one big advantage; it has a well-documented and well-supported way for communicating with it. I guess that's one reason why so many RMS programs support it. That's also indirectly an advantage for someone who connects a RMS program to their track; you can switch from one RMS program to another without changing or re-wiring your track hardware (assuming that the different RMS programs input/output functionality are the same).

An Arduino board is only hardware, there's no standard way of communicating with it. That of course makes the board flexible, but someone has to define how the computer should communicate with it. The examples I've seen so far where an Arduino board has been connected to a RMS program has been very specific to that program.

Nothing wrong with that of course, it's a hobby and it's amazing to see where people take it. But from my own point of view, I'm hoping that a more RMS generic Arduino solution will evolve, and if that happens I will be happy to support it. But I rather avoid making a RazManager specific Arduino solution.

Having said that, some day in the very distant future, I really would like to make a 20 car lap tower that got its live data from RazManager, no matter of have many Arduino boards it would take. That would be so cool!
 
Discussion starter · #26 ·
I forgot to mention that RazManager can be extended by someone else to support custom hardware. All hardware communication is handled by "plug-ins", even the hardware I myself develop support for.

Someone else can write a plug-in that communicates with some custom hardware, e.g. an Arduino board, using a proprietary protocol. The plug-ins have to be developed with C# and .NET 4.5, and use a Microsoft technique called MEF, Managed Extension Framework. It's a fairly advanced topic, so anyone who is developing these plug-ins has to be a pretty skilled C# developer. Plug-ins (even those that I developed myself) are not a part of the RazManager executables. They are instead placed in a directory, and automatically detected when the program starts. Plug-ins developed by others don't have to be open-source, and they will not be a part of the main RazManager distribution (or source code), although I can of course link to them from my home page.

There are a set of functions and data available to the plug-ins, so a plug-in and its corresponding hardware are limited by that. But as an example, what you typically would do with a Phidget card could be supported by a custom Arduino plug-in developer.

People have contacted me about supporting SCX-D. That's a system I don't have myself, so I'm not able to develop and test for it. But this an example of a plug-in that someone else might develop.
 
Discussion starter · #27 ·
To be able to add support for the DS-200 and the DS-300, I bought a bunch of DS products from my favourite slot car web shop:

Image


I've bought more light bridges than can be connected to a DS-300, but my plan is to also use the light bridges without a DS-300, and connect them directly to a Phidget or an Arduino. So far I´ve tried with a Phidget card, and only an extra ~10K resistor is needed to get it to work. I want to use the light bridges not only for the start/finish line, but also for sector timing and speed traps with analogue cars, that's why I need several of them.

I also bought some extra Phidget cards to play with:

Image


These are the latest revision of the 1012 model which have been available for a year or so. This revision is smaller than the previous ones, and also includes +5V connectors, e.g. for driving a light bridge. In my case I was able to drive a four lane DS light bridge, even though it normally gets 7.5V from a DS-300.

I know that many think Phidget cards are a bit expensive, but they have some extra features that might be useful. Behind the input and output connectors, there are some protection components that might save you from some mistakes, and they also have small LED indicators that make troubleshooting a bit easier.

Phidget cards are a bit slow though, the 1012 has a sample rate of 125 samples/s. I like to use slotted switches glued around the slot instead of light bridges (see the first post in this thread for a picture). But that only sees the guide blade, not the whole car, and I found out that it wasn't enough for the Phidget card to be able to detect a fast moving car. So either slotted switches with some additional pulse extending components are needed, or the use of a light bridge that sees the whole car and not only the guide blade.

QUOTE (Razamanaz @ 27 Dec 2013, 01:31) <{POST_SNAPBACK}>But from my own point of view, I'm hoping that a more RMS generic Arduino solution will evolve, and if that happens I will be happy to support it. But I rather avoid making a RazManager specific Arduino solution.
I realized that a common Arduino solution is not going to happen, and I guess that also I have some of my own ideas of how I want to support Arduino cards in a RMS. So I bought a bunch of Arduino cards and related stuff to have something to play with:

Image


As partly mentioned in another thread, it something like the following I'd like an RMS program to support when connecting to one or several Arduino cards:
  • Support for several types of Arduinos, so that the user can choose a card with the right number of pins and dimension to suit their needs.
  • Let anyone decide which pins that should be used as digital inputs (with our without the internal pull-up resistor), and which should be used as digital outputs. All of this constrained of what is possible with a specific Arduino card, of course.
  • Configurable bounce filtering for input pins.
  • Send a timestamp value together with an input state change. It may be a good idea to use the Arduino not only for setting and getting state of digital I/O pins, but also to use the Arduino's microcontroller as a time reference. This may get a better lap time resolution for analogue tracks, instead of checking the computer's clock when the data arrives.
  • Send the time difference between state changes of two digital input pins, so two sensors on the same lane within short distance can be used for a speed trap with good resolution.
  • Logic for detecting the ID of SSD cars, or oXigen cars in SSD mode (and then use that for S/F-line, sector and speed trap detection).
This results in a lot of different possible configurations, and you would not use all of these features on one of your Arduino cards. Instead of letting everyone write their own Arduino sketch/program, or modify a template I provide, I think it would be a lot easier to let anyone do the configuration on a screen in RazManager, and then let RazManager generate the source code for the then user specified Arduino sketch/program, and after that automatically compile/link it and flash the Arduino (without even involving the Arduino IDE). If you would like to tweak the generated source code and then flash the Arduino yourself, that would also be possible.

It will take an awful lot of time before I get to implement something like this, and when I started this project I promised myself to not create any proprietary protocols or do any microcontroller programming. But currently, it seems like this is the way I want to support (some of the) Arduino cards in RazManager.

And when this is done, there won't be many working PCs left that still has a parallel port and meet the RazManager server's minimum requirements, so therefore I do no longer plan to support the parallel port as an input/output interface.
 
I'm currently developing a web client for RazManager. It's a so called single page application, and it's developed with AngularJS. The "looks" comes from Twitter Bootstrap. You can easily find Bootstrap themes and customize the look of the web client yourself. The iPad screenshots below are using the Superhero and Spacelab themes from Bootswatch.

Image


This web client is responsive, I.e. it adjusts its layout to the screen's resolution and orientation. It can be used both on large desktop screens, mid-sized screens, tablets in both landscape and portrait orientation, and on smartphones.

Image


The smartphone screenshots come from a Samsung Galaxy S4. Even if you could use it for browsing the cars you have entered into RazManager, and manage new or existing cars, you would perhaps mostly use the web client on a smartphone for personal race status and statistics.

These smartphone examples are using yet another set of Bootstrap themes from Bootswatch; Shamrock and Slate.
 
Discussion starter · #29 ·
I've begun a new job, and as always seems to get myself in a situation where I'm working too much, so I haven't done much coding on RazManager lately. But my new colleagues are a creative bunch of people, a lot of them very good at app development for iOS and Android, and I've convinced them that RazManager is a good platform for developing fun apps and creating fun customer events. So when I get the server side ready and done some demos, I can get help with app development, something I'm not doing myself.

I tried Google Glass a few days ago at work. Cool, even though the display was a bit smaller than I expected. But it is something I really need to connect to RazManager someday, to show position, lap times, time difference to competitors, etc, I.e. a virtual pit board. Google Glasses may be a bit of a gimmick, but they are quite useful for situations where you already are using your hands for something else, are moving your head around, but still want to have information available.

Image


I've read a lot about developing for them, and even though I haven't tried it myself yet, they can easily be integrated with a server-based application like RazManager. I only need to get that server part done, I hope get forward with this during the summer&#8230;
 
Sounds a really interesting option, will be looking forward to progress updates.
 
Discussion starter · #32 ·
What I realized after developing parts of the solution, is that it's probably too complicated for most persons to install all the necessary software components on their computer(s). If you're working as a software developer, or something related, it might work. But I got a bit worried that I would need to spend a lot of time troubleshooting slot car enthusiasts' installation of my software. Almost everyone can install any of the good RMS programs already out there, but RazManager (in the form presented in the previous posts in this thread) requires something completely different when it comes to software installation.

I've spent the last 1.5 years developing cloud based solutions, which requires no installation at all on the local computer, everything is hosted "in the cloud". In my case, I'm using Microsoft's Azure, and in this area, there is also coming out new software components for IoT, Internet of Things, which is something I would like to look into. It may also be the perfect fit for what I really want to achieve with RazManager.

So what I'm currently looking into is to make RazManager a cloud based application, SaaS, software-as-a-service. It would require users to have an Internet connection, but would not require complicated local installation(s). You create an account for your track(s) on the RazManager home page, and do some configuration with any (modern) browser. The track interface hardware becomes the "Internet of Things". For simple hardware like the oXigen dongle, it would be as simple as plugging the dongle into a Raspberry Pi 2, load it once with some RazManager software, some minimal setup to allow it to communicate with the cloud based parts, and then you're done.

All this means that a lot of what has been mentioned in this thread will be scratched, and I'll need to re-start yet again. But it would still be the same multi-user and multi-client software, aimed at making fun events, as before!

I've got a lot to read, test and learn to make this possible, so it will take quite some time before I get there, definitely not this year. But in the long run, I think that this is the way forward for me and RazManager.
 
RMS on a Raspberry Pi? Sweet! That's even better than your original project. But if it's on Azure, will we need Windows 10 on the Pi, or will it run on one of the Linux distros?
 
Discussion starter · #34 ·
The Raspberry is only there to connect the track hardware to internet and the main RMS logic on the server hosted in Azure. An Arduino board could have done the same thing, but is a lot more expensive when equipped with Ethernet capabilities.

For presentation, a computer, tablet and/or smartphone is still required, well, anything that can run a modern web browser (and/or whatever other clients I'll develop). But by design, you could have any number and combination of these.

Microsoft recently announced a lot of coming stuff for integrating "Internet of Things" devices with Azure, so it's in that direction I will go. I got a lot of reading to do to catch up with all the details and later try it, but Windows 10 on a Raspberry Pi 2 is one of the options, and therefore an option for RazManager.

Earlier this year, I had in my mind that I should write a small little Java program for the Raspberry B using the standard Raspberry Linux distro. All the program would need to do is to read (and in some cases write) the data from (and to) e.g. an oXigen dongle or a DS-300, and simply forward it to a RazManager server in Azure. I'm not sure yet if a Linux distro on a RaspBerry is supported by the software components I want to use, I'll need to find out.

What I really need to do is to get some basic stuff up & running, then I will need all the help I can get. I don't develop smartphone apps myself, but I have a lot of talented colleagues who do, and they've said that they would be very interested on building apps for a future RazManager platform. And if I don't have the time and/or knowledge to get a Raspberry Pi with a Linux distro to talk to the RazManager server and track hardware X, then maybe someone of you can build it. But I first need to get the server part done and document the APIs, that will take quite some time&#8230;
 
I know that this is an old topic, but I was wondering if there is any code to be read or downloaded. I would love to try and port the original idea to be used on the new Raspberry Pi 4's that are out.
 
Discussion starter · #36 ·
Hi there!

I haven’t written anything here in several years, but the project is still very much alive. I’ve simply taken another direction with it, more in the lines with what’s presented a few posts back. I need to get a bit further before making a bigger presentation, but you can get some hints in this thread as well as in this thread.

No, there’s unfortunately and currently not any code to download. There’s only a small portion of the RMS that runs on a Raspberry Pi, the part that interfaces with a track system and/or that presents RMS data on a screen or some hardware. The main RMS logic is hosted “in the cloud”, but will have a protocol that is open for anyone to interface with. The source code will not really be open source, except for some guidance on how to use that protocol.
 
The main RMS logic is hosted “in the cloud”, but will have a protocol that is open for anyone to interface with. The source code will not really be open source, except for some guidance on how to use that protocol.
So basically you will be providing an API to interact with your system. I can understand that.
 
Discussion starter · #38 · (Edited)
Yes, it’s a set of APIs, but it’s done in a way so that others can contribute to the total RMS solution.

I saw your thread about open-source projects, and I agree with a lot of it. In my daily life as a software architect and developer, I rely a lot upon open-source software. It’s amazing to see what people contribute with, and how it really has changed the software industry. Of course, it would be great to see something like that happening related to our slot car hobby.

When you’re in the software industry, it’s good to sometimes look at the source code for an open-source library you’re dependent upon, and maybe contribute to it in order to make it better because it’s so important for the rest of your solution. As a maintainer of an open-source library, it might be worth the effort to manage contributions from others in order to improve the project.

But in the slot car world, I would guess that very few are actually interested in looking at the source code for a larger project, and very few are interested in managing contributions from others for their software. There are of course exceptions, but in general I would guess that most are interested in the “free” aspect of open-source, and that some developers may be looking for public interfaces/protocols which they can use for their own software and/or hardware.

But even that last part is hard. The Scalextric ARC Pro has had a public interface available for years, yet there’s only a single public available program using it, the Magic App; none of the existing RMSs have added support for it. Oxigen has had a public interface even longer, but there are only a few RMSs that support it. But writing a new RMS from scratch is hard and maybe not that rewarding; the immediate feedback you will get are requests for things that are missing and other RMS programs already have. If you already are an RMS developer, it might be hard to add support for another track system for a number of reasons.

I myself have tried an “open-source-approach”, but failed twice for various reasons. Maybe not really “open source” by the book or by definition, but more in the “free” aspect of it. It was never meant to be a library that could be a part of someone else’s bigger solution, or a way for others to contribute with source code. Yes, I would certainly love to do it that way, but I would not have the time to manage such a project. I instead need to focus on getting something out there. I started to work with this in 2006, but haven’t released anything yet…

In my now third RMS attempt, I’m (again) trying to look at things a bit differently. By splitting the traditional monolith RMS program into several pieces, there will be opportunities for others for integration and presentation. Here's a high-level overview:
Image


There’s a central cloud RMS service responsible for all core RMS logic; lap counting, lap times, race management, users, etc. This single instance is shared by anyone using the RMS, hosted on the Internet, and maintained by me.

Then there needs to be something on a track owner’s location that interfaces with the track itself, starting lights, etc. I’ll provide auto-updated software for anyone that wants to do this using a Raspberry Pi, with the support for the following:
  • Digital I/O (GPIO) pins on the Raspberry Pi for analog lap and sector timing, power control, various lights, etc, and hopefully SSD ID detection.
  • Oxigen
  • Scalextric’s ARC powerbases
But as the protocol is public, anyone can add support for additional systems. E.g, if someone wants to use Carrera’s digital alternative, a small program can be written that acts as an interface between a Carrera Digital track and the RMS, without needing to build a full-scale RMS. This little program can run on anything, it could be a Windows PC, it doesn’t need to be a Raspberry Pi.

The same could be done for any add-on that has its own protocol. E.g. the popular Pit-Pro add-on could be added the same way.

I have a Scalextric APB, but I probably won’t add any support for it myself, and will instead leave that as an exercise for someone else. Again, as its protocol is “public”, I’ll make sure that the RMS protocol can support and take advantage of its features.

For the RMS presentation part, I’ll provide support for the following:
  • Any modern web browser on any type of device.
  • A “digital signage solution”, using Raspberry Pis with auto-updated software. From large displays for public use to small 7” driver stations. Interactive, or non-interactive.
  • RGB LED matrices for lap towers, etc.
  • Philips Hue bulbs, etc.
There may be small iOS and Android apps to begin with, but that will be mostly for configuration of the local devices.

The RMS presentation data is also available through an open protocol, so anyone can build their own software and hardware to present it in other ways.

So, it’s not really open-source. But it’s “open” in a way that let other developers add software and hardware as a smaller part of a bigger RMS solution. For personal use or available to others, open-source or not. However, I don’t think that this will evolve into some de-facto “RMS open standard”, but it might inspire someone else to go that route with something similar. And actually, the protocol I will use can be used on the other side as well, i.e. replacing my RMS core logic with something else. That can be a good alternative if there’s no Internet connection available, and you want to maintain the “RMS server” yourself.

Because my RazManager server solution requires a stable and relatively fast Internet connection. In the proof-of-concepts I’ve done so far, from the Wi-Fi in my home in Gothenburg, Sweden to the RazManager server hosted in Azure in Amsterdam, Netherlands, the roundtrip takes ~50ms. That’s from e.g. a car is detected, the data is sent to the server, some server calculations are done, and then some data is received back at my home again. So, using this within Europe should be OK for most RMS data, hopefully US and Australia should be OK as well, I’ll find out.

But please note that all logic doesn’t need to be in the central RazManager RMS logic. E.g, when doing throttle mapping logic for the Scalextric APB, that can be done by e.g. a Raspberry Pi at the track owner’s location.

Phew, I need to start posting both often and shorter…
 
Discussion starter · #39 ·
Do you already have ideas hoe you want to keep Razmanager sustainable? Running on Azure is also not without (cost).
There are only a few RMS programs that are maintained for a longer period of time, and one factor might of course be cost. Running RazManager in Azure costs ~150 euro per month, eventually publishing apps will add to that, so that’s something I need to cover somehow. And as it’s free to use and I don’t sell any hardware for it, there’s no money coming in that way.

Most of my goal with this project are still the same as when I started this thread almost 10 years ago. As a “senior software business analyst, architect and developer”, this is my playground for trying out new stuff. The problem with that though, is that there’s always something new to try out, and this project gets changed a bit. But that’s OK with me, I don’t have a deadline for this, and I’m not going to release anything feature in-complete and end up in a lot of support questions. I’m now back to being self-employed again, and thought I would have a bit more time to devote to this. But even if this project isn’t released yet, it’s working too well as a reference…

Anyway, in my professional job, I need some software development licenses which happens to include Azure subscriptions costs, and those cover my RazManager costs. This is how my business model for all this works, and actually already contributes to my personal income.
 
21 - 40 of 40 Posts