SlotForum banner

RazManager  Development

1 reading
27K views 39 replies 13 participants last post by  joeyslots  
#1 ·
Introduction

I'm happy to present RazManager, my free and open-source Microsoft Windows-based Race Management System (RMS) for Slot.it's oXigen, Scalextric Sport Digital (SSD) and the Digital Advanced 6 Car Powerbase (C7042), and various sensors for analog tracks. After years of things that have been in the way, like work, I've finally started serious development on it.

The presentation of the first public release will be different, but for this development presentation I will assume that you already are familiar with slot car racing and have used some RMS programs before. RazManager will have the usual RMS features; lap counting, lap timing, championship management, car management, driver management, team management, track management, pre/in/after-race reports, penalties, handicapping, and digital racing features like fuel and pit-stop functions and pace/ghost/computer cars, etc.

But I've tried to use a little bit different mindset when implementing these, and other, features. For me, it wouldn't make any sense to write a RMS program similar to the ones that are already out there. RazManager has instead more of a public event and entertainment twist to things. I of course get inspiration from reading this and other forums, and also being a race fan in general and F1 fan in particular. But most inspiration for this project comes from having a family with three kids. This means that game consoles, tablets, smartphones, etc, are now a natural part of our lifestyle, and I want to include these devices, and the user experience on these devices, in my RMS.

My goal with this project is not really what it might seem to be. I run my own business as a software developer/architect, using mostly Microsoft's products but also Oracle's databases. New software technologies arrive now and then and I need to catch up with them, but is not that often I get to try these out in my professional assignments, especially when they still are in beta or are very new. You can read web sites, forums, blogs and books, try example code, take a training course, etc, but to really learn these things and get some experience you need to try it yourself with something larger than a little test application. I have a passion for developing software, but I also have a passion for slot car racing. By combining these things, I can have fun while learning stuff useful for my daily work. The main goal I really have with this project is to use it as a playground for trying out new Microsoft-oriented software techniques.

This means that RazManager is not meant to be "everything to everyone", though you'll find a lot of features both for club- and home-style racing, for two of the digital systems and for some input methods for analog tracks. OK, if there's one area I'll try to be best at, then it's "public slot car events where people come and go and want to be entertained". In opposite to my professional assignments, this project is technology-driven, meaning you'll find features like a smartphone app, and e.g. using it and the phone's camera for registering new participants. When I'll try to learn and explore techniques that are new to me, I'll add features not usually found in a RMS program. They might not be on top of your priority list, but can in some cases be useful.

If RazManager is a personal project mainly driven by my own needs, are there any reasons for you to have any interest in it? I of course think it would be fun if its feature set interest some of you, build a small user community, get some feedback, improve things, and learn from it. There are also some opportunities for other developers to add their own extensions; it will be interesting to see how that will be received and where that will lead to.

Here are some things that might catch your interest:
  • RazManager will always be free. I see no business in selling a (very optimistic) few hundred licenses. I see business though in taking what a learn from all aspects of this project, and using that in my professional life, as well as arranging fun slot car events and marketing myself.
  • Animated 3D presentation of current race status, and some reports. To me, it makes the program come alive and a lot more entertaining. The 3D screens are optional though, you may prefer the more traditional 2D grid type screens that are also included.
  • Sector based timing. Not only for analog tracks, but also for SSD/C0742 (and oXigen in SSD mode) using one or several Pit-Pros as sector sensors.
  • Sector based speed for pace/ghost/computer cars for SSD/C0742 (and oXigen in SSD mode), also using one or several Pit-Pros as sector sensors.
  • Speed trap. By using two analog sensors approximately a full length track piece apart and on the same lane, the car speed can be measured. With some limitations, this also works for digital systems.
  • Connect several computers, tablets and smartphones in a multi-user network. Not only for presenting data on several monitors and type of devices, but also for entering data and e.g. control the race from more than a single PC (and some external buttons connected to it).
  • Windows 7/Vista/XP client (will also run on Windows 8), Windows 8 app client, and a Windows Phone 8 app client. Hopefully some of you will be interested in writing an iOS (iPod/iPhone/iPad) client and an Android client. In a distant future, I would like to add an Xbox client, and a web server part with web pages for computers, tablets and smartphones.
  • Windows 7/Vista/XP server (will also run on Windows 8). You might not necessarily be aware of the server part when you run a RazManager client, but the server can be used by other developers and their own clients (and they can release their work for you to use).
  • Plug-in format for track interfaces. Suport for the digital systems and analog sensors I myself have will be written as plug-ins to RazManager. But other developers can also write a track interface plug-in to RazManager, and thereby make it support more digital systems and analog sensors than I have a chance to do.
  • RazManager uses Microsoft SQL Server 2012 as its database. There are free editions available for download from Microsoft's site, but if you have a commercial edition installed at your office, you can use that as well. I guess for most of you the database format isn't that interesting, but for those of you that like to make your own reports, the data is available.
    If you have more than one track at the same location, they can use the same database so you don't have to enter the same drivers more than once, have multi-track championships with races at the same time at different tracks (with different drivers…), etc.
These topics are explained in more detail in the following sections.

User interface

If you've used a RMS program before, you are probably familiar with the 2D grid style race status window, where in most cases the rows in the grid are sorted after race position, and I'll make a version of that as well. Though that type of screen is informative, I wanted (at least have an option) to present race status, etc, with the look and feel of what people that are using modern game consoles and multimedia center programs are used to; 3D-look, 3D-animations and reflections.

The screenshots you see in this post are from an early prototype I made back in 2009 (a lot of the text in this post also comes from that old presentation). The screenshots are low-resolution, 8-bit color, hard compressed images, shrinked in size to comply with the forum rules. Each of them is available as a high resolution image, which should be viewed to get a better feeling of what the screen looks like (although these images are also in 8-bit color to keep the file size down to a reasonable level (~1Mb)). Be sure though that your image viewer really displays them in full resolution. E.g, Internet Explorer's viewer has a habit of making lines look "jagged" when downsizing an image.

Image

Cropped low-resolution screenshot of a 2x3=6 car grid
Also available in a high-resolution 1920x1200 widescreen version

The basic idea is to have images of the cars in their own 3D-frame, order them after their current race position, and animate the car frames in different fancy ways when the race positions change.

Image

Cropped low-resolution screenshot of a car frame
Also available in a high-resolution 1920x1200 widescreen version

The car frame contains some basic race data, and a fuel meter on the top bar (I got the direction of the fuel meter wrong in that old prototype, will fix that). A "team flag" can be used as a background; otherwise the background will have a darker version of the car frame color.

Image

Low-resolution screenshot of a 3x4=12 car grid overview
Also available in a high-resolution 1920x1200 widescreen version

The grid can be changed to have any number of lanes.

Image

Low-resolution screenshot of a 4x5=20 car grid
Also available in a high-resolution 1920x1200 widescreen version

Although 20 cars can be displayed, it looks a bit crowded and the text becomes harder to read for the cars at the back of the field. It might be good to combine this with one or two extra monitors with a 2D grid (if using 2 monitors, one grid screen with the drivers in position 1-10 for the first monitor, and a second grid screen with the drivers in position 11-20 for the second monitor).

Image

Cropped low-resolution screenshot of two cars changing race positions
Also available in a high-resolution 1920x1200 widescreen version

Race position changes are animated, as well as camera position, camera angle, and different spotlights. This, together with automated speech, gives an impression not really reflected in these screenshots. A 3D image really begs for animation, it's what makes it come alive.

Different race reports can also have an animated 3D look. Below you see a screenshot from the Swedish pre-race F1 show. I want to have something similar to this (but animated, of course):

Image


Hardware sensor support

Scalextric's Digital Advanced 6 Car Powerbase (C7042)

For a Scalextric Sport Digital (SSD) track, RazManager supports the Digital Advanced 6 Car Powerbase (C7042). There are no current plans to support the older SSD 6 car powerbase (C7030).

Besides the usual features, like automatic throttle calibration, throttle profiles, pace/ghost/computer cars, using the buttons for track call, etc, the buttons and the throttle can also be used for navigating some RazManager screens. For race oriented screens, it will actually be sufficient to use the buttons and the throttle on the controllers to setup a race and control it. Not really more complicated than playing a multi-user game on a game console (in fact, the inspiration for this comes from the Buzz PlayStation game series). Some parts of the race setup let the drivers enter their own details simultaneously with the other drivers.

The communication protocol between the C7042 and the PC (as well as firmware updates to the C7042) can be downloaded from the SSDC site. The raw data from the controllers are sent to the PC and it's up to the RMS to control what is sent to the cars. There are some extensions to the original SSD protocol meant to support car chips with the InCar-Pro firmware. However, RazManager won't support these extensions, as I haven't seen them being used that much, and I have no chips with modified firmware myself.

Slot.it's oXigen

Slot.it's digital system oXigen is also supported by RazManager. The oXigen "Dongle To PC" protocol is rather different compared to the SSD protocol. Instead of sending a lot of raw data and let the RMS program control everything, the oXigen dongle is a little RMS program itself. It sends laps times, lap counts, etc, to the PC and let the PC control a few things like start/stop, track call and maximum speed.

When a button on a SCP-1 controller is pressed or released, this is not reported to the PC. I had hoped it would be, but this might get included in the protocol in the future. Anyway, currently the buttons cannot be used to initiate a track call, and cannot be used for RMS navigation as in the SSD example above.

Pit-Pro
When using SSD/C0742 (and oXigen in SSD mode), the modified Scalextric Pit Lane Game called Pit-Pro (from the Pit-Pro team) is supported. You can use more than one Pit-Pro for multiple pit bays/stops, and the Pit-Pro can also be used for other purposes. See the features section later for more details.

I haven't tested yet that the Pit-Pro really works with an oXigen chip in SSD mode, hopefully it will.

Phidget

The http://www.phidgets.com/products.php?product_id=1012" target="_blank">PhidgetInterfaceKit 0/16/16</a> with its 16 digital inputs and 16 digital outputs can be used to interface to start/finish line sensing and power control for analog tracks, and track calls, start lights and speed traps for all systems.

Parallel port

You don't find a parallel port on PCs sold for the last couple of years, but it has been a popular way to connect to an analog slot car track. As RazManager's hardware requirements are rather high, your PC cannot be too old, but I want to include support for the parallel port anyway. Haven't tried it yet, hopefully it will work. If it does, the supported functions will be the same as the PhidgetInterfaceKit 0/16/16 (see above).

Web camera

When I've shown early versions of RazManager to non-slotters, like colleagues and friends, many have said that they got to buy their kids a slot car kit, or try to find their own old kit lying somewhere on their parents loft. They want to try the software, but don't have the time or commitment to add sensors to their analog kit like we slotcar people would have done before breakfast. I would therefore like it to be possible to use a web camera as a start/finish line sensor. Not that elegant, but no soldering iron required.

Smartphone camera

An alternative to the above would be to use a smartphone camera.

Other hardware

I myself have the equipment for SSD, oXigen and an analog track, so these are the only systems I'm able to test and support. I have an N-Digital 1.05 console, but as that version don't send any timing data, it's useless for my RMS. However, other developers can write plug-ins to let RazManager support more hardware.

I am myself not too keen on supporting customized hardware that is only used by a handful of people. One piece of customized hardware I do support is the Pit-Pro, but it is also rather common in the SSD community, and really adds a lot of value. I perhaps really use it too much, as RazManager will not only support several Pit-Pros for pit-stop functions, but also for non-pit-stop functions like sector timing, sector based pace/ghost/computer cars, and speed trap identification (again, see the features section later for more details). Using the Pit-Pro only as a SSD car identifier is maybe an expensive and complex method, but right now it's the only (non-powerbase) method for SSD. If something else gets a wide acceptance, I'll be happy to support that. Maybe it will be there some day&#8230;

Simulator

There's hardware simulator available that lets you (and me) test RazManager without connecting to a real track.

Multi-user and multi-client

Overview

RazManager's functionality is divided into three parts/layers/tiers. The first part is the so called client; it handles the user interface. It is connected to the second part, the server, which is responsible for the race management logic and other logic as well as the hardware communications. The server uses a third part, the database server, for all data storage.

You can do all this on the same PC, of course. But if that is the only thing you want to do, dividing the functionality into three separate programs/services isn't really needed (and that's why most other RMS programs have all the functionality within the same program).

However, if you want to use several PCs not only for pure displaying purposes but also for entering data, and/or use other type of devices like a tablet or a smartphone for the same thing, separating the user interface from the race management logic makes this easy. Here is one of many examples on how you can have several user interface client programs connected to the same RazManager server:

Image


You can, as in the picture above, have a computer with only the RazManager server program and the database server, and run clients on other computers and devices. Of course, you can also run a RazManager client on the same computer as the RazManager server program; not shown in the picture above, but probably what most people would do.

If you have several tracks at the same location, you can have several RazManager servers connected to the same database, so you e.g. don't have to enter the same drivers more than once. You can also run races at the different tracks at the same time, but that are a part of the same championship.

In many respects, RazManager's architecture is like the architecture of a line-of-business application that you might already use at your office. I haven't seen this architecture being used in the slot car world yet, but variations of this has been very common elsewhere since the end of the nineties; the technologies used to implement them are changing all time time, though.

Clients

Windows 7/Vista/XP

There is a client program for Windows 7/Vista/XP (that also runs on Windows 8).

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.

Due to some differences in graphic driver models between Windows XP and Windows 7/Vista, and the way that some lower level part of the 3D functions uses them, the 3D screens in RazManager looks a bit jagged when running Windows XP. So Windows 7/Vista is really recommended if you want to use these screens.

Windows 8

The Windows 8 app will of course have a different user interface. Although you perform the same tasks as with the Windows XP/Vista/7 client, the Windows 8 app instead follows the User interface guidelines for Windows Store apps.

I know there are mixed feelings about Windows 8, but if you have a tablet with Windows 8, its touch interface will make it really easy to use. The RazManager Windows 8 app of course takes advantage of this, so you don't have to mess around with a keyboard and a mouse while administering your race, etc. It'll give you the same freedom as wireless slot car controllers do.

Windows Phone 8

Windows 8 tablets are not available yet, and it will perhaps take a while before they become common, but most people nowadays have a smartphone. RazManager will have an app for Windows Phone 8. It will be similar to the full Windows 8 app, but without most configuration screens. With the RazManager Windows Phone 8 app, you will be able to:

  • Present race data to the race audience
  • Present personal race data. Even you can have lots of computers and monitors connected to the RazManager race server for presentation, and hopefully see what you want to know, it may perhaps be easier sometimes to have a quick look at your smartphone for your own data.
  • Adjust personal parameters both before and during a race, instead of everyone sharing the same PC before the race.
  • Connect a headset to hear lap times, fuel level, etc.
  • Fuel levels can be excluded on the public screens, and only being shown (and/or heard) on the personal phone.
  • Race administration, e.g. start, track call, and penalties.
  • Register new drivers using the smartphone's camera.

iOS (iPod/iPhone/iPad) and Android

I won't myself develop an iOS (iPod/iPhone/iPad) or an Android app for RazManager, since I don't develop for these systems. But hopefully some of you will be interested in writing apps that can connect iOS and Android devices to the RazManager server.

Web

Initially, there won't be a web client (and web server) for RazManager, but in the distant future I hope to get this done. A graphic intense HTML5 client, both for smartphones and larger displays, would be fun to write some day, but it's not going to happen next week&#8230;

Xbox

It would also be fun some day to develop an Xbox client, but that is even further into the future. The new Xbox has most probably already arrived when I get a chance to have a look at this&#8230;

Other clients

You could write your own client, and use it instead or in addition to the RazManager clients I write. You could use any programming language and operating system you wish, as long as you can connect to the RazManager server's XML web service interfaces and network streams.

Server

The RazManager server program runs on Windows 7/Vista/XP (and also on Windows 8). It doesn't have much of a user interface, but you'll see it in the Windows notification bar.

Database

RazManager uses Microsoft's SQL Server 2012. Though the most advanced versions of SQL Server that has all the features cost a lot of money, there are also some free versions available, and it's one of them that is recommended and sufficient for RazManager, the one with Reporting Services so you can make your own web based race reports. I you wish, a lot of data is logged for you to dive into.

You would usually install the database server on the same computer as you run the RazManager server, but it could be installed on another computer as well.

Features

Here are some features I would like to highlight:

Pit-lane and multi pit-bay for SSD

Pit stops will only be supported for digital systems.

When using SSD and one Pit-Pro, a combined pit lane and single pit bay will be supported. But if using more than one Pit-Pro, you can have a pit lane with one or several pit bays, and use the pit lane for drive-thru penalties.

Image


For oXigen, only a combined pit lane and single pit bay will be supported, that's a limitation in the protocol (although I had hoped it would be possible to use a layout as the one above).

Sector based timing

For analog tracks, you can get sector times if you have the sensors and input ports for it. But you can also get sector times for SSD (and oXigen in SSD mode) using one or several Pit-Pros as sector sensors. You won't be using the Pit-Pro for pit stops then, so you can take off the tower part if you want to.

Sector based speed for pace/ghost/computer cars for SSD/C0742 (and oXigen in SSD mode)

When not having enough drivers to fill the grid for a digital system, it's popular to use extra cars controlled by the power base or the computer. These cars run as any other human controlled car, counting laps, changing lanes, etc.

These are often referred to as pace cars, which I think is a bit confusing. They don't act as a pace car you see on a real race track. They are not ghost cars either, as they can run into you, or you can run into them yourself. RazManager instead refers to these cars as computer cars.

With RazManager, you cannot run a lap, record the throttle and use this as a playback for a computer car. The speed is either fixed or adjusted according to a target time. When using SSD (or oXigen in SSD mode), instead of using the total lap time as a target time, one or several Pit-pros can be used as sector sensors and each section can have its own fixed speed or target time.

Speed trap

One perhaps unusual but fun feature is to have one or several speed traps. This works by having two analog sensors approximately a full length track piece apart and on the same lane, the car speed can then be measured. Two sensors are required per lane, but one of them can double as the start/finish line sensor. Many analog tracks uses light bridges combined with photo transistors, but for the speed sensing you may want to use slotted switches instead:

Image


With some limitations, speed traps also work for digital systems. The digital system's start/finish line sensor cannot be used as a part of the speed sensing, I don't think it will be accurate enough, it won't be for oXigen. You still need two analog sensors per lane to measure car speed. The digital system's start/finish line can be used to identify the car, so the speed measuring section has to be as close as possible before or after the start/finish line. If a speed can be measured, and there's one and only one car identified in a very short period of time close to the speed measurement, then the speed for that car can be displayed.

When using SSD (and oXigen in SSD mode), a Pit-Pro can also be used to identify the car close to the speed trap. With this configuration, the Pit-Pro can also be used in combination with sector timing and sector based computer cars.

Public events

If you have a race evening at home or at your club, and you have more drivers than you have lanes/controllers, there are various ways of organizing the races/heats, but you usually rely on that all drivers are known and registered before you generate all the races/heats. But if you have a public event, where people come, stay for a while, then leave, then the all races/heats cannot be generated at the start; all drivers are not yet known.

In addition to the usual race modes, RazManager will also have a come-and-go race mode. For the first round, the racers known at that time are randomly divided into groups. For the second round, the 1-2 last racers in group 1 are moved down to group 2 and the first 1-2 racers in group 2 are moved up to group 1. The 1-2 last racers in group 2 are moved down to group 3 and the first 1-2 racers in group 3 are moved up to group 2, and so on. After a few rounds, the heats will eventually have drivers with the same skill (or luck). New drivers that arrive enter in the last group, and groups are adjusted when drivers drop off. New drivers can be entered from a second computer, tablet or through the Windows Phone 8 app using the phone's camera; this can be done at the same time that others are racing.

Presentation scheduler

Those that are currently racing might want to have the same type of race status screen all the time, but for people not racing you may want to show other types of screens as well, e.g. various race reports, standings, who's running the next heat, etc. But you may not want to have a dedicated monitor for each of these things, but instead automatically rotate among these different screens on the same monitor. RazManager will have a presentation scheduler let you arrange how different RazManager screens should be used on the different monitors.

Open source

RazManager is developed with Microsoft Visual Studio 2012, C#, and .NET Framework 4.5 for the non-Windows 8 parts. The code will be "open-source" and free, but I have not yet decided the exact license model for this.

But even if the source code will have some sort of license, please feel free to use any ideas in RazManager for your own use. As a RMS program, RazManager of course shares most of its features with other RMS programs; we are all trying to model essentially the same thing. There are perhaps a few things in this post that you haven't seen before, but I hope that others pick up these ideas as well and make something useful of them. As always, my view is that forums are for sharing ideas, not protect them.

Open source projects are often developed by several persons, but as RazManager is my playground for trying out new things, I would like develop the core code myself. However, there are opportunities for other developers to write their own clients and hardware plug-ins using RazManager's software interfaces.

When using these software interfaces, how you license your extensions, and whether you share your code or not is up to you; you're not changing or extending my code. If you want to sell your iPhone or Android RazManager client for $10, I'm of course OK with that.

Should you change to RazManager?

Choice is usually a good thing, and slot racers are lucky because there are a lot of RMS programs to choose from. There are an enormous amount of RMS programs for analog racing, there are more and more programs for SSD (even if it took longer to get to that point than I expected). Oxigen is still relatively new, but I'm sure there will be an increasing number of RMS programs supporting it.

But should you change from your current RMS program to RazManager? Well, probably not! If you make a quick top 10 list of things that make a good race evening, then what the RMS does is probably not on that list. It's simply there, and you focus on other more important things. So if you are happy with what you've got, there are really no reasons to switch to something else.

If you're using a 10 year old computer for your RMS, then a RazManager client, the RazManager server and the database server won't run very well on that. You'll need something better to run all these pieces on the same computer. But even then, you might not gain that much compared to your current RMS if you only want to use a single computer with a single monitor.

But if you are using several monitors, computers, and perhaps want to use tablets and smartphones, and/or you are interested in RazManager's entertainment take on what an RMS should do, maybe how it can be extended by yourself and others, you can of course try it. After all, it's free. OK, it will cost you your time, and maybe upgraded and/or new hardware.

Be aware though, that it's a bit complicated to install and configure all the software components, and setup the network. Not a problem if you work at an IT department, but might be a problem if you're not a friend with your computer. If that's your case, perhaps someone of your friends can become friend with your computer. Once everything is installed and configured, RazManager will be quite easy to use.

Summary

After presenting some projects I never finished, like the RazNBox N-Digital semi-compatible console and RazNManagement RMS that later became RazNTime and RazNChip - my own N-Digital chip, and presenting a very early prototype, it feels good to present this project and at last get started on my RMS, something I have wanted to do since ~2006.

I guess I don't have any good reputation here on the forum for finishing things, but this time I'm not letting any electronics development or work get in the way. I seem to be a person who always is working too much, and with a family with 3 kids, a house, etc, it doesn't leave that much room for hobbies. Now I'm not taking any new professional assignments until I'm reasonable finished with this project, so at last, I'm able to focus on it.

Depending on your feedback, some things might change and some other things might be added for a first release. I don't know when that will be; there are both hardware and software I want to use that haven't even been released yet.

It's easy to see that I'm not a Twitter-type. I find it hard to express myself with only 140 characters. I usually think, re-think, write off-line and then re-write, before I enter something into the forum. Then instead a long article pops up, like this one. Even so, there are a lot of things and thoughts I haven't put into this post, it's too long anyway. But if you got this far, thanks for reading!
 
#2 ·
Hi Raz,
I would like to congratulate you on your project! after reading it through it seems you have covered absolutley everything that might be wanted by everyone
Image


Its good that you wish to share it with everyone and I wish you good luck!

If you added the mouse left click and scroll wheel click as a 2 lane interface option (as per PCSlotMouse) then I would like to try it out too
Image


Cheers!
Richard
 
#6 ·
QUOTE (-Sy- @ 16 Oct 2012, 18:16) <{POST_SNAPBACK}>..do you have a website for the package?
There will be a web site at www.razmanager.com, but it will take a while before that is up & running. I'm not finished with the program yet, and that will take a while too, so there's nothing to be downloaded right now.

It's hard for me to predict how much interest others have, or will have, in RazManager. But I don't expect that much, really, as there are a lot of good alternatives available that people are already satisfied with. Also, I don't have that much to show yet. One reason for presenting all this at this early stage is of course to get some feedback, so I can do some early design changes. Another reason is to slowly build up some interest among other developers that might not have the time or commitment to build a full RMS, but that might want to write some parts of it. One thing I hope that others will contribute with is writing track interface plug-ins for products I don't have myself.

QUOTE (FacPrime @ 16 Oct 2012, 17:57) <{POST_SNAPBACK}>How about support for Carrera D132 system?
This is a case where I don't have the system myself, so I cannot myself support it. I haven't looked at its protocol, but I would guess that its features are covered by the functionality in RazManager, so for someone with the right developer skills, it should be "fairly easy" to write a plug-in for it.

QUOTE (PCSlot @ 16 Oct 2012, 17:55) <{POST_SNAPBACK}>If you added the mouse left click and scroll wheel click as a 2 lane interface option (as per PCSlotMouse) then I would like to try it out too
Image

That was a great program you have, I haven't seen that before! A rather simple and inexpensive interface method, together with a lightweight program. RazManager isn't exactly lightweight though, a part of it is a 1.3Gb download of SQL Server, so I'm not sure if the mouse method goes that well with what I'm doing. Maybe someone want to try to write a mouse plug-in as an exercise?
Image


QUOTE (-Sy- @ 16 Oct 2012, 18:16) <{POST_SNAPBACK}>Do you plan spot support the DS products, such as DS300?
I looked at these products some years ago, but instead used some home-made sensors for my own track connected to a parallel port. I took part in a competition, also some years ago, where they used DS stop&go-boxes and the large pinball board for displaying result and times. It seemed to be a fun, simple, and reliable system, so I guess it's popular on analog clubs. It's not used that much here in Sweden, though.

Initially, I hadn't planned to support these products, simply because I don't have them, but I may re-consider that. E.g, I could easily take the light bridge, and the other stuff, with me and use it on someone else's track that might not have any sensors, and quickly demonstrate my project.

Specifically, I might then support the DS200 Pro and the DS300 Pro. Is the current protocol specification? But I guess a requirement from myself to add DS support, and buy all this stuff, is to also add support for DS-0045, the DS-INTERFACE box. It has a different protocol though, and it's two-way. I haven't found this protocol, anyone who can help me with that?
 
#7 · (Edited by Moderator)
Hi, the DS protocol specification you have is correct and current. You say the project is in Visual Studio, did you say what language, is it C++ or VB.NET ?

I could send you some code to decode the DS protocol, quite straight forward, then you could cut it to suit.

[Edit] Just checked C#....
 
#8 ·
This sounds ambitious, but well thought out. I like the idea of having a dedicated database server (MySQL might be a less burdensome choice), as this opens up all manner of possibilities, especially in the form of reporting tools, particularly for things like club websites. I'm planning to go digital next year, and will need some form of RMS, so I'll add this to the list of ones I'm keeping an eye on.

One thing to keep in mind is that lots of computers used for RMSing tend to be older, less powerful machines no longer suited to other daily tasks. I wonder if the full on graphical experience of this free RMS might be too expensive in terms of hardware for many potential users. Do you plan to include a Lite form of the interface so that the full functionality of the RMS part can be enjoyed without over stressing lower specification hardware ?

I haven't done any programming in nearly 20yrs (I'm a network admin), but I often wonder why nobody has yet put together an incredible Linux based RMS. I would have thought many of the features inherent to *nix would lend themselves well to such a task. Things like lower hardware requirements, choice of lightweight desktops, remote screens, efficient multi-tasking etc. Also, not having to worry about Microsoft licensing when pressing reclaimed hardware back into service.

My apologies, I'm starting to drift off topic. I assume you are using this project as an aid to learning more about Microsoft's current programming tools. I am very interested to see how this project develops, and I wish you luck with it.
 
#9 ·
Linux offers many simplications in terms of interfacing with the hardware over Windows, and the timing resolution is much more accurate in Linux. The only problem I can see is which flavour? There are numerous Linux shells around, not all of them are the same.

I still like the idea of the way DS kit works, off load all the timing and accuracy into a black box then let the PC process the results, this could then be a web-based application written in Javascript with a CGI or servlet to get the data from the device into the web-application.

I agree using MySQL would be better IMHO, not being a fan of Microsoft. MySQL is free, much smaller and very effecient. The syntax of the SQL is almost the same with some small differences '%' instead of '*' for wildcards for example.
 
#10 ·
Stoooo and Sy,

Yes, I agree. If I had slightly different goals with this, there would be some products and technologies I may have used instead. But as I'm mainly a Microsoft developer, it's Microsoft-oriented products and technologies I want to use, as the number one goal I have with this is to learn new things that I have use for in my daily work. Also, when technologies are new or updated, they are supported by Microsoft, but may be not supported or be lagging a bit behind for non-Microsoft stuff. But if things don't work, if too many resources are consumed, I might need to make changes, like changing to MySQL.

QUOTE (stoooo @ 17 Oct 2012, 12:22) <{POST_SNAPBACK}>One thing to keep in mind is that lots of computers used for RMSing tend to be older, less powerful machines no longer suited to other daily tasks. I wonder if the full on graphical experience of this free RMS might be too expensive in terms of hardware for many potential users. Do you plan to include a Lite form of the interface so that the full functionality of the RMS part can be enjoyed without over stressing lower specification hardware?
I'm afraid that the full and animated graphical experience wont' be that good on a +10 year old computer, as you're saying, a computer perhaps often used as a dedicated RMS computer at home or at a club. When I did my prototype in 2009, I tried it on an old XP computer. It lagged a lot when using sweeping camera movements, moving spotlights, reflections, etc. But when gradually turning these things off, it got better and better, and was OK with only the car frames moving sometimes. So I'm planning to have a lot of these options configurable, like in most PC games. And there are "traditional" static 2D screens as alternatives to these animated 3D screens. But I haven't tried yet with also running both the RMS server and the database server on the same old computer; it may not work that well.

QUOTE (-Sy- @ 17 Oct 2012, 13:11) <{POST_SNAPBACK}>I still like the idea of the way DS kit works, off load all the timing and accuracy into a black box then let the PC process the results&#8230;
Yes, I agree. I've used slotted switches instead of light bridges for my analog tracks, so I have used the length of the guide blade instead of the car's whole length for detection. I once measured how long the guide blade was "visible" for the slotted switches when running my 1/32 cars at full speed, it was ~2ms. With an old favorite RMS, SlotRace Manager, running in pure DOS and using the parallel port as interface, there were never any problems with missing laps. But when using Windows and a Windows RMS, missing laps were rather frequent. When helping a friend in a similar situation, I had to make the pulse longer than the ~2ms with some electronics to avoid missing laps. And then people think they have a 1/1000 resolution for their lap times&#8230;

Polling the parallel port for a trigger pulse isn't really a good method, so I didn't want to include it first. But as it's a popular method, I'll make a try and see if it works reasonable well. But I'll constrain the shown lap times to only include 2 decimals.

All of this was actually one reason why I changed my mind and want to include DS support anyway.
 
#11 ·
I've hit my first road block in this project.

QUOTE (Razamanaz @ 16 Oct 2012, 10:28) <{POST_SNAPBACK}>RazManager is developed with Microsoft Visual Studio 2012, C#, and .NET Framework 4.5&#8230;
Two of the books I've read to prepare for this project, Introducing .NET 4.5 and Pro C# 5.0 and the .NET 4.5 Framework, both fail to mention that when going from .NET 4.0 to .NET 4.5, you'll lose support for Windows XP. I didn't check this myself before I started this thread, but instead realized this when I tried to install .NET 4.5 Framework on a Windows XP computer. I generally try to avoid using smileys, but right now I find them useful:
Image
Image
Image
Image
Image


There are features in .NET 4.5 Framework I would like to use; ADO.NET Entity Framework 5.0 is dependent upon .NET 4.5, among other things. But this should mostly affect how I want to do things on the RazManager server, I should still be OK with using .NET 4.0 on the client.

Unfortunately, this means that I'll have to drop support for Windows XP on the server part. But I can still support Windows XP on the client.

QUOTE (Razamanaz @ 16 Oct 2012, 10:28) <{POST_SNAPBACK}>If you're using a 10 year old computer for your RMS, then a RazManager client, the RazManager server and the database server won't run very well on that. You'll need something better to run all these pieces on the same computer. But even then, you might not gain that much compared to your current RMS if you only want to use a single computer with a single monitor.
Having RazManager drop support for Windows XP on the server may in reality not mean that much, since a 10 year old computer with Windows XP wouldn't be used to run both the client and the server anyway. Also, if your XP computer has +1GB memory, you can upgrade it to a later Windows version.

This means that you can still run the RazManager client on Windows XP, but to be able to do that you need to have (at least) a second computer with Windows 7/Vista (or Windows Server 2008/2012) that the RazManager server and the database can run on. You would still have use for some old XP computers, e.g. using them as extra presentation computers. If using Windows 7/Vista as your one and only RMS computer, this is still sufficient (provided it has enough memory).

OK, I'm disappointed myself, but it's not affecting any existing user base, only a few days old presentation. I think it's the right decision for me to take advantage of new technologies, and not writing yet another RMS program with the same features and low hardware requirements. There are plenty of very good alternatives already out there for old hardware.

I also didn't notice before that Microsoft dropped support for Windows XP when using SQL Server 2012, it was there in SQL Server 2008 R2. OK, I could have solved that by using SQL Server 20008 R2 instead of SQL Server 2012, but there are some 2012 features that I may want to use, so this is a part of the decision to drop Windows XP support for the RazManager server part.

Sorry guys...
 
#12 ·
QUOTE (Razamanaz @ 19 Oct 2012, 13:18) <{POST_SNAPBACK}>OK, I'm disappointed myself, but it's not affecting any existing user base, only a few days old presentation. I think it's the right decision for me to take advantage of new technologies, and not writing yet another RMS program with the same features and low hardware requirements. There are plenty of very good alternatives already out there for old hardware.
I actually admire you taking that stance. Since you are planning to give the software away for free, there is no need to put up with people whining about this or that. You are developing a solution for *you*, and sharing it with anyone else willing and able to play. If it has higher hardware requirements than everyone else's products, then so be it. Stating this at the beginning sets expectations appropriately.

It also leaves you free to use whatever bleeding edge technologies you like. I'm excited to see what you can achieve.
 
#14 · (Edited by Moderator)
Of course you can run it under a 32 and 64 I guess it works on boot..The database of course. If it will be installed in Azure, it dostn matter.

I will love to test it with my new track, pictures will come.

In my point its neceserly to keep track of each single track Id.
How will we do that?

Passing Göteborg next week, maybe I get some answer say Lasp

Its one the time that we got a new thinking on software.
In swedish we say Lapp on Lapp , and it dosnt means track records. Patching!
Its about you add different thing on a all ready solution.

Time for new thinking ;-)

well done
 
#15 ·
QUOTE (-Sy- @ 19 Oct 2012, 19:18) <{POST_SNAPBACK}>Is the executable win64 or win32 ?
This article gives some background: Understanding .NET application options for 32 and 64-bit systems

The RazManager executables will not be set to specifically target 32-bit or 64-bit. The .NET runtime and the JIT compiler will take care of producing code for the platform that is used.

When calling external DLLs, there's a potential 32-bit vs. 64-bit problem. I see two cases where I will need this:
  • The Phidget drivers are platform dependent, but there's a Phidget .NET wrapper DLL that takes care of the differences, and hides the platform dependent details from my program.
  • If I'll do an interface plug-in for the parallel port, I'll need to call external DLLs; one for 32-bit and another one for 64-bit. Using techniques similar to the ones described in the article above, I should be able to make the right call at runtime.
This is the theory; I hope it works as I expect it to. I'll of course need to test on both 32-bit and 64-bit systems, and various Windows versions.
 
#16 ·
I don't work with C# so I really don't know to much about it, I do work with C and Java on a daily basis. If C# uses pointers or shared object library calls then the pointers will have to be of the correct size. Win32 executables can be run in Win64 environments, but Win64 exectuables cannot be run in Win32 environments. This is important when considering older systems as most older systems will only support Win32.
 
#18 ·
QUOTE (Razamanaz @ 17 Oct 2012, 09:26) <{POST_SNAPBACK}>But I guess a requirement from myself to add DS support, and buy all this stuff, is to also add support for DS-0045, the DS-INTERFACE box. It has a different protocol though, and it's two-way. I haven't found this protocol, anyone who can help me with that?
I e-mailed IBB Auto Racing, the company that makes the DS products, and asked about the protocol for DS-0045, the DS-INTERFACE box. They no longer make this product, so there will be no support for it in RazManager (at least not from myself). However, the DS-200 Pro and the DS-300 Pro will be supported.

There's now a Swedish thread for RazManager. It's basically the same presentation as here, with some small adjustments and clarifications.

One clarification was how I intend to use oXigen in combination with a Pit-Pro. With SSD, I want to use Pit-Pros for not only pit lane and pit bay detection, but also for sector time detection, sector synchronized computer cars, and as a part of speed trap detection. This would also work with an oXigen chipped car with the chip in SSD mode and with ID 1-6, and using the SSD C7042 power base for start/finish line detection. In this case, the oXigen car would work as any SSD car. I haven't tried yet that an "oXigen chipped car with the chip in SSD mode and with ID 1-6" can actually be detected by the Pit-Pro, but hopefully it will work.

However, not all of the above will work with an "oXigen chipped car with the chip in SSD mode and with ID 1-6", and using the oXigen USB dongle for start/finish line detection. The dongle, not the PC, is doing the timing. Although lap times are exact, there is a delay of up to 600 ms until the PC receives the lap times. Timing the moment when this data is received cannot be used as a time reference in combination with other sensors, in this case the Pit-Pro; calculating the time difference won't be exact enough. Therefore, the oXigen dongle in combination with a Pit-Pro cannot be used for sector times and sector synchronized computer cars.

Using the Pit-Pro for detecting an "oXigen chipped car with the chip in SSD mode and with ID 1-6" in combination with speed trap sensors would still work, but I guess no one would buy a Pit-Pro only for that purpose.
 
#20 ·
Hi!

I'm currently working on this most of the day, currently mainly on the server and the database parts. It's still a bit hard for me to predict when it will be ready. Among other things, it depends on when I need to start working again, when some Microsoft software components are released, 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, and of course rehearsals with the temporary band).

But my current guess is that the first public release of RazManager will be somewhere at the end of 2013.
 
#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?
 
#22 ·
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.
 
#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.
 
#24 ·
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
 
#25 · (Edited by Moderator)
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!
 
#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.