Conferencing Software


In order to transmit the data from a PC, two Windows programs were used. Both of these programs were written in Visual C++ 5.0 using MFC. Two programs were required because the original circuit was designed for Dr. Frank Vahid’s office hours. The MFC program for this circuit is slightly more advanced. It allows the user to select a file from any directory and have the text from this file sent and displayed on the LCD. The text is transmitted at a user-defined interval. Also, the rotation speed of the text can be varied. It also provides the user with an edit box that will automatically send what is in the box instead of a file. The advantage of using the file is that the text being sent can be changed remotely, assuming that the computer is connected to a network. The other MFC program used for the conference rooms is much simpler. It simply sends text from the files containing room schedules at user-defined intervals. This program is simple because the web-based scheduler does most of the text processing. Details about the programs can be seen below:

Conference Room Scheduler:

This MFC program was written using Microsoft Visual C++ 5.0. It reads in the data for each room from the appropriate file and then sends it through the serial port of a PC to the transmitter circuit, which sends it to all the conference rooms. The data is sent at user-defined intervals, which can range from every minute to every hour. The only user interaction that is needed is to specify the path of the files that contain the conference room information and to click the send button.

As this software runs, it will automatically update the information that is sent to the serial port. It uses a protocol that will send a SAME_TRANSMISSION byte if the current data hasn’t changed. This allows the receiver to ignore the data and to continue to display text. This is done by storing a temporary copy of the previously sent data. Any time that data is to be sent, it is compared with the old data. If the data is the same, a SAME_TRANSMISSION is sent. If the data has changed, a BEGIN_TRANSMISSION is sent which will always interrupt the receiver and cause it to read the new data.

When data is sent for the first time on a new day, it will be sent multiple times to ensure that all data is received correctly. This is done assuming that at midnight there will be little interference from other electronic devices and also that it will be rare for a user to schedule a time for the current day. When data is sent for the first time on a new month, the file for the previous month is erased so that people can sign up for times for that month in the following year.

The source code for this software can be found here.
The source code for a similar program used for office hours can be found here.

Web-Based Scheduler:

JavaScript Login - The login screen for the conference room scheduler was done in JavaScript. It allows the user to select the day and room for any time up to 11 months in advance. When the user clicks the "Go to Schedule Button", all the data is formatted and sent to the first Perl CGI.

Login CGI - The login CGI receives the appropriate date and room from the login screen. It then uses the room number to open the appropriate file and the date to go to the appropriate line of the file. It then dynamically builds a table for each time in the selected day. If a time has already been selected, the person it is reserved to will appear next to the time. If a time is free, a text box will appear that will allow the user to reserve it. The user can then reserve the time by clicking the reserve time button. When this button is clicked, all the information is passed to the update CGI. If all the times are full the user can select a different date using the change date button.

Update CGI - The update CGI is passed all the reserved information from the reservation screen. It saves this data to the appropriate file and then builds a confirmation web page that is displayed.

Concurrency Control - The web scheduler can handle an arbitrary amount of users at once. The data is protected from concurrent access by using file locking. Also, if two or more users are updating the same day at the same time, the scheduler will allow one of the transactions to work and all following transactions that include that time will fail and a web page will be displayed that tells the user to try again. This will only occur if multiple users are attempting to change the data at the same time. After the data is updated, any following users will not be allowed to enter any data during the conflicting time slot.

The HTML, JavaScript, and Perl code can be found here.