Sends serial port data to any application (e.g., Excel, Notepad, ERP systems).
Can collect data from Serial, RS232, and RS232-via-USB industrial equipment.
Supports real-time data viewing and custom data handling.
✅ Sends serial data as keyboard input
✅ Works with RS232, USB-to-Serial devices, and industrial equipment
✅ Real-time data viewing for monitoring incoming data
✅ Customizable serial data processing via SerialReaderBase
✅ Supports multiple baud rates and handshake methods
Device Type | Examples |
---|---|
Barcode Readers | Handheld scanners, POS systems |
Weighing Scales | Industrial balances, lab scales |
Meters | Voltage meters, pressure gauges |
Calipers | Digital calipers, micrometers |
Sensors | Temperature, force, pH sensors |
Custom Devices | Any RS232-based industrial tool |
Builds upon https://github.com/pormiston/SerialWedge
- Go to the Releases page: SerialWedge Releases
- Download the latest
Wedge.exe
from the Assets section - Run the application (no installation required)
- Clone the repo:
git clone https://github.com/jglatts/SerialWedge.git
- Open the SLN file in VisualStudio
To implement a custom serial reader, follow these steps:
Your custom serial reader must be a subclass of SerialReaderBase
.
This ensures it integrates smoothly with the wedge system.
using System;
using System.IO.Ports;
using System.Windows.Forms;
namespace Wedgies
{
class MyDeviceSerialReader : SerialReaderBase
{
/*
Constructor for the custom serial reader.
Calls the base class constructor to initialize the serial port and callback.
*/
public MyDeviceSerialReader(SerialPort port, UpdateCallback callback)
: base(port, callback)
{
}
/*
Initialize serial port settings specific to your device.
Override this method to configure parameters like parity, data bits, stop bits, etc.
*/
public override void initPort()
{
// example usage:
port.Parity = Parity.Even;
port.DataBits = 8;
port.StopBits = StopBits.One;
port.DtrEnable = true;
port.RtsEnable = false;
}
/*
Core method for reading and processing serial data.
This method is called repeatedly in a loop while the reader is running.
Override this method to customize how data is interpreted and processed.
*/
public override void worker()
{
try
{
// Read a line of data from the serial port
string line = port.ReadLine();
// Process the data as needed
if (string.IsNullOrEmpty(line))
return;
// Example: Filter out unwanted characters
line = line.Replace("?", "");
// Send the processed data as keyboard input
SendKeys.SendWait(line);
// Invoke the callback to update UI or logs
updateCallback?.Invoke(line);
}
catch (TimeoutException)
{
// No data available, continue
}
}
}
}
In frmwedge.cs
, you would typically instantiate your reader like this:
public frmWedge()
{
// constructor code
SerialPort port = new SerialPort();
serialReader = new MyDeviceSerialReader(port, updateLiveInput);
// more constructor code
}