Quantcast
Channel: Zer's Programming Page
Viewing all 119 articles
Browse latest View live

DeviceList.Local.Changed not triggered on Linux without modifications

$
0
0

Without modification `DeviceList.Local.Changed` does not get triggered on Ubuntu 18.04

Filename: `LinuxHidManager.cs`
Line: ~69

This is the code in the current version

if (0 != (fds[0].revents & (NativeMethods.pollev.ERR | NativeMethods.pollev.HUP | NativeMethods.pollev.NVAL))) { break; }                       
if (0 != (fds[0].revents & NativeMethods.pollev.IN))
{                                
    IntPtr device = NativeMethodsLibudev.Instance.udev_monitor_receive_device(monitor);
    if (device != null)
    {                                    
        NativeMethodsLibudev.Instance.udev_device_unref(device);
        DeviceList.Local.RaiseChanged();
    }
}

The following line never returns true:

if (0 != (fds[0].revents & NativeMethods.pollev.IN))

However, if I disable this check I get proper change notification and no exceptions.
Basically, the following version works:

if (ret == 1)
{

    if (0 != (fds[0].revents & (NativeMethods.pollev.ERR | NativeMethods.pollev.HUP | NativeMethods.pollev.NVAL))) { break; }                       

                                   
   IntPtr device = NativeMethodsLibudev.Instance.udev_monitor_receive_device(monitor);
    if (device != null)
    {                                    
        NativeMethodsLibudev.Instance.udev_device_unref(device);
        DeviceList.Local.RaiseChanged();
    }
   
}

Do you see any issue with this?

PS: Again, it would be really great if you had an official git repo for this, it is such a useful project.


HIDSharp HIDStream Write throws exception

$
0
0

Hello,

I've trying to communicate with a FTDI FT260 Chip with the HIDSharp Library 2.1.

I can search / select the device, open it and get / set feature reports.

Also I get a HIDstream object back from the Open method. It is of type WinHidStream derived from HIDSharp.Platform.SysHidStream

Reading fails with the timeout as expected, as there is nothing to read yet,

But I'm unable to write a Byte array to the device with HIDStream.Write. I always get "Operation failed early: falscher Parameter" the german part meaning "wrong Parameter".

The following topic is related but the thread starter never answered back, so in my case. "Yes, I'm putting the report ID in the first byte." -->forum.zer7.com/topic/10086/

Here is the code up to this point (PowerShell on Windows 10 Version 1809 x64):

Add-Type -Path .\HidSharp.dll

[HidSharp.HidDevice[]]$devs = [HIDSharp.DeviceList]::Local.GetHidDevices(0x0403,0x6030)

[HIDSharp.HIDStream]$devstream = $devs[0].Open()
$buffer = New-Object Byte[] $devs[0].GetMaxFeatureReportLength()
$buffer[0] = 0xA1
$buffer.Count
$devstream.GetFeature($buffer)

$buffer[0] = 0xA1
$buffer[1] = 0x08
$buffer[2] = 0x04
$devstream.SetFeature($buffer)

$buffer = New-Object Byte[] $devs[0].GetMaxOutputReportLength()
$buffer[0] = 0xD0
$buffer[1] = 0x48
$buffer[2] = 0x06
$buffer[3] = 0x01
$buffer[4] = 0x00
$devstream.Write($buffer)

Has anyone an idea what to look for ?

To verify the device being working at all, I tried the same thing with the HidLibrary dll project, where it works. But I'd like to stay with HIDSharp because here the timeouts are working.

HIDSharp: Cannot open datastream, TryOpen() always returns false?

$
0
0

Hello all,

I'm fairly new to working with HID, especially from the host side.  I usually stick to microcontrollers but in this case I need to write an application to monitor the traffic from my microcontroller based HID devices for testing purposes.

I've dabbled in C# .NET so HIDSharp seems perfect for whipping something up quickly with WinForms.  It's strange to me that MS doesn't just have libraries in .NET for this but that's not my problem today.

I'm working with HIDSharp v2.0.2.0 attempting to monitor traffic from a composite HID device.  The composite device consists of a Keyboard with LEDs and a 3-Button mouse.  Both are HID.  Keyboard Codes on EP1, Mouse is on EP2.  The device works with the standard windows HID Mouse and Keyboard drivers.

First things first, I want to have a look at the keyboard traffic, since I have a few weird custom scancodes I need to ensure are coming through correctly.

I am able to find the device based on the VID/PID and confirm based on the name if I am seeing the Keyboard:

HidDevice KeyboardDevice;
HidStream KeyboardStream;

HidSharp.Reports.ReportDescriptor KeyboardRptDescriptor;
HidSharp.Reports.Report KeyboardReport;
HidSharp.Reports.Input.HidDeviceInputReceiver InputReceiver;

OpenConfiguration KbdConnectCfg = new OpenConfiguration();

if (d.VendorID == 0x0000 && d.ProductID == 0xA0A0)
{

    if (d.GetProductName() == "Keyboard")
    {
         KeyboardDevice = d;
         KeyboardRptDescriptor =KeyboardDevice.GetReportDescriptor();            
     }

}

if (KeyboardDevice != null)
{
    /*Device Found*/
    if (KeyboardDevice.TryOpen(out KeyboardStream))    //This always returns false
    {
        KeyboardReport = KeyboardRptDescriptor.InputReports.FirstOrDefault();
        keyboardBuffer = new byte[KeyboardDevice.GetMaxInputReportLength()];
        InputParser = KeyboardReport.DeviceItem.CreateDeviceItemInputParser();
        InputReceiver = KeyboardRptDescriptor.CreateHidDeviceInputReceiver();
        InputReceiver.Start(KeyboardStream);
        InputReceiver.Received -= new EventHandler(HidInputReceived);
        InputReceiver.Received += new EventHandler(HidInputReceived);
    } 
    else
    {
        rtb_hidLog.AppendText("Unable to open Datastream\r\n");
    }
                
}
else
{
    rtb_hidLog.AppendText("No Device Found\r\n");
}

The device is found with no problem and my KeyboardDevice object populates, but when I use TryOpen(), it always returns false and I don't get a datastream.  Might someone be able to point out why this might be, or maybe how to get some more information to determine why I can't open the datastream to this device?  The only thing I've really tried is opening the device with the Exclusive and Transient options set:

KbdConnectCfg.SetOption(OpenOption.Exclusive, true);
KbdConnectCfg.SetOption(OpenOption.Transient, true);
BullnoseKeyboard.TryOpen(KbdConnectCfg,out KeyboardStream)

but it appears to have no effect, I still cannot get the datastream.

I'm probably just missing something due to not really being familiar with HID from the host side.  If there's any additional information I can provide that would be of help, let me know.  Any thoughts are appreciated.

Thanks!

HIDSharp on macOS Sierra...

$
0
0

Hi all-

I have written a cross-platform Asp.NET Core Web Api that runs in a console window using HidSharp 2.1.0.   (Using VS 2017)

I publish this as a Self Contained app running on Windows 10 and successfully connect to my device and am able to successfully communicate with my one connected USB device - a UPS. I can get a list of devices, read things like the serial number, manufacturer, version, etc.. I can also access all the reports.  In other words, everything works like it should.

I then publish this targeting a Mac OSx-64, copy it over the a Macbook Air running Sierra 10.12.6 and execute it.  I am able to get a list of devices, get notified successfully when a new device is plugged into the USB, but any attempt to access any of the methods like GetSerialNumber or GetReport fails with Device.IO.Exceptions.

For example, the call to GetSerialNumber produces the following exception with Stack Trace:

HidSharp.Exceptions.DeviceIOException: No serial number.
   at HidSharp.Platform.MacOS.MacHidDevice.GetSerialNumber()
   at Obsidian.UpsShutdown.MonitoringService.Monitoring.UpsMonitoringProcessor.<>c__DisplayClass13_0.<EstablishUpsMonitoringJobs>b__0(HidDevice d) in D:\Projects\Vertiv-Ups\VertivUSBShutdown\Dev\Source\Services\Ups.MonitoringService\Monitoring\UpsMonitoringProcessor.cs:line 84

When I do a .ToString() on the HID device I get:

Vertiv Co  Liebert PST5   (no serial number) (VID 4271, PID 2, version 0.2)  so I know I'm getting some information back from it.

On Windows, the UPS reports back a SerialNumber without any issue.   Any attempt to access any other reports or features results in a similar types of errors. 

I'm not a Mac developer and a bit of a novice on running apps on Mac, so am unsure if I'm taking the right steps in running HIDSharp on a MacOs and would appreciate any help on what I may be doing wrong in getting this to work.

Thanks in advance!

GetSerialNumber on Mac throws an exception...

$
0
0

Hi all -

The following code:

var devices = DeviceList.Local.GetHidDevices(4271).ToList();
var serialNumber = devices[0].GetSerialNumber();

Throws a DeviceIoException  ("Serial Number Not Found") on MacOS (Sierra), but works fine on Windows 10 (.Net Core) using the same device.

Is this a known issue?   Are there any suggested work arounds?

Thanks in advance!

HIDSharp: can't access to SerialSettings class

$
0
0

It's my first post on this forum so I'd like to say "Hello Word" and I'm sorry for my English smile

I'm working with HIDSharp library and I have little problem. I'd like to get default port settings before open it. I found SerialSettings class in sources but this class is inaccessible from code.
I'm making simple wpf application and I'm trying bind port settings with UI.
Is it possible to get default serial port settings from library?

Greetings

HIDSharp stuck on exiting .net app

$
0
0

Apologies if this has been asked before.

How can I unblock HIDSharp when an application wishes to exit?
I have a solution but I have one doubt about it and would appreciate hearing your thoughts

I have a native windows application (not written by me) that is hosting and running a .net dll plugin (that is written by us).
The native app is taking a very long time to shut down.
The native app is MS Word and we are running a .net VSTO AddIn in it.
Eventually MS Word forcefully shuts itself down and will sometimes disable our AddIn as a result on the next time it starts.

Running HIdSharp's DeviceList.GetHidDevices method starts code that prevents shutdown, but calling that method in a .net console app does not prevent the app shutdown.

Debugging HIDSharp it turns out there is a message loop that is started when calling DeviceList.GetHidDevices.
This message loop calls a native method called GetMessage, that blocks the thread that called it until a message is received.
Because the thread is blocked by unmanaged code, even when calling the managed thread's abort method during shutdown the code does not exit the GetMessage call because at the point it is blocked the thread is in native code and is not managed.

My current solution to the problem is, during out shutdown method's execution, to free the blocked thread my supplying a message to the program. That message is then picked up by the GetMessage.

That in and of itself isn't quite enough though for two reasons:

1.) As GetMessage runs in a loop the message must be of a value that causes the loop to exit (i.e. cause GetMessage to return 0 or 1).
2.) As GetMessage is listening on the main program window's messages the message I send must be to the main program window.

So using the native method PostMessageA  in (winuser.h) as follows does the trick:

PostMessageA(hWndOfMainWindow, WM_QUIT, IntPtr.Zero, IntPtr.Zero);

Using WM_QUIT causes GetMessage to return 0. (This is by design in Windows).
hWndOfMainWindow is obtained using the native method CreateWindowEx (HidSharp's WinHIDManager does that itself to obtain the handle too).

One plus side to this solution is that it works without any having to make any changes to HIDSharp's code.

However, it relies on knowing HIDSharp's internals (which could, in theory change in the future).

Also, sending WM_QUIT is potentially problematic because it is a way of telling an application to shut itself down.
In our case, the application is indeed already an a shutdown process so sending WM_QUIT shouldn't be a problem, but I wonder whether the application could interpret the WM_QUIT message as an instruction to cease that very shutdown process that it is in the middle of immediately thus causing the app to shutdown untidily.

I wonder whether you have any thoughts on this.
Have you come across this before?
Is there another way to deal with this problem that can avoid these downsides?
If a solution could be implemented within the code base of HIDSharp, what might that solution be? And in how long do you think you would have something like that on NuGet?

WinHidDevice.ReportDescriptorReconstructor.cs NotImplException - fix

$
0
0

We have a number of devices that are throwing a NotImplementedException() in WinHidDevice.ReportDescriptorReconstructor.cs@171 [v2.1.0] during open. I propose the following code to mitigate the problem. Whether this fixes for all cases I cannot be sure but it seems to for us. I guess it shouldn't be a big deal if no-one else has previously reported this.

Thank you for your efforts.


else if (dataIndexCount == 1)
                        {
                            // Array...
                            int bitCount = reportItem.ReportCount * reportItem.ReportSize;
                            var usageValue = new byte[(bitCount + 7) / 8];
                            for (int i = 0; i < usageValue.Length; i++) { usageValue[i] = 0xff; }
                            int hr = NativeMethods.HidP_SetUsageValueArray(reportType, item.UsagePage, item.LinkCollection, item.UsageIndex, usageValue, (ushort)usageValue.Length, _preparsed, reportBytes, reportBytes.Length);
                            if (hr == NativeMethods.HIDP_STATUS_SUCCESS)
                            {
                                GetDataStartBit(reportBytes, reportItem, maxBit);
                            }
                            else if (hr == NativeMethods.HIDP_STATUS_NOT_VALUE_ARRAY) // +++[
                            {                                
                                hr = NativeMethods.HidP_SetUsageValue(reportType, item.UsagePage, item.LinkCollection, item.UsageIndex, 0xffffffff, _preparsed, reportBytes, reportBytes.Length);
                                if (hr == NativeMethods.HIDP_STATUS_SUCCESS)
                                {
                                    GetDataStartBit(reportBytes, reportItem, maxBit);
                                }
                                else // ]+++
                                {
                                    throw new NotImplementedException();
                                }
                            }
                        }
                        else
                        ...

You'll need to add the following two items to NativeMethods.cs as well:

public static readonly int HIDP_STATUS_NOT_VALUE_ARRAY = HIDP_ERROR_CODES(12, 11);

[DllImport("hid.dll", CharSet = CharSet.Auto)]
        public unsafe static extern int HidP_SetUsageValue(HIDP_REPORT_TYPE reportType, ushort usagePage, ushort linkCollection, ushort usage, uint usageValue, IntPtr preparsed, byte[] report, int reportLength);

DeviceList.Local.GetHidDevices does not list all devices on Ubuntu 19

$
0
0

I have a number of different systems running Linux:

14.04
18.04
19.04
19.10

On 14.04 and 18.04 when I call `DeviceList.Local.GetHidDevices ` I get all HID devices  including our custom devices.
However, on Ubuntu 19.04 and 19.10 I do not get all HID devices. 

Microsoft Tranceiver, VID: 0x045E, PID: 0x07A5 is returned on all versions of Ubuntu
Custom HID Device 1, VID: 0x1A86, PID: 0xE0E0 is returned on all versions of Ubuntu
Custom HID Device 2, VID: 0x483, PID: 0x5750 does not show up on Ubuntu 19.04 and 19.10

On all systems `lsusb` finds all the devices.

While this is probably more related to Ubuntu than the library, I am wondering if anyone has any idea what might be causing this.

Update:

On Ubuntu < 19  `lsusb -t` specifies a driver for the devices that are not found on Ubuntu >= 19
while on Ubuntu >= 19 `lsusb -t ` does not.

For example on Ubuntu 18.04:
Port 6: Dev 13, If 0, Class=Human Interface Device, Driver=usbhid, 12M

On Ubuntu 19.04
Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=, 12M

HidSharp. USB strings

$
0
0

Hello!

Is HidSharp able to read USB strings from HID devices?
I need a method in HidSharp that can read the same information as this one:

[DllImport("hid.dll")]
private static extern bool HidD_GetIndexedString(IntPtr hidDeviceObject, int index, ref byte lpReportBuffer, int length);

Thank you for help!

How can I improve the overall response(of remoteViewing)?

$
0
0

Hey! everyone.

I'm on a final-project with my teammates now.
Our goal is to dev a VNC program and remotely control the other computer.
and I started with yours, cause it's based on C# and working nicely:)  (thank you alot Zer!)

so I add some code to transfer mouse&keyboard command
and fortunately works well!

but I faced off a problem.

different from cmd transferring,
the screen refresh rate doesn't reach our expect.

How can I improve the overall response?
I've tried several ways to do this,
but I failed cause it's program-constructively FIRM to me
I don't know even where i should add or modify code for it.

I hope you to read this post. and Thank you a lot for your effort
It was very helpful and I promise to include credit at the end of mine!

Generic HID: EventHandler for incoming data?

$
0
0

Hello,

I'm currently trying to write a .NET Winforms application to exchange some configuration info with microcontroller (and in the future, probably do logging and other data exchange as well).  The device enumerates in windows, and I am able to find it in my application and open the HID stream.  I'm also able to send data to the device.  Where I'm running into problems is receiving data from the device.

My device is a generic HID with 2 Endpoints:
EP1: 64-Bytes INT, 20mS
EP2: 64-Bytes, INT, 20mS

My code to find and open the device is below, both upon loading of the form, and whenever the device list changes:

Load:

/*On form load, check for our device and set up the listChanged event*/
        private void Form1_Load(object sender, EventArgs e)
        {

            var hidDeviceList = list.GetHidDevices().ToArray();

            deviceFound = false;
            foreach (HidDevice dev in hidDeviceList)
            {

                if ((dev.VendorID == 0x0000) && (dev.ProductID == 0x0505))
                {
                    device = dev;

                    /*We found our device*/
                    if (device.TryOpen(out hidStream))
                    {

                        using (hidStream)
                        {
                            
                            deviceFound = true;

                        }

                    }

                }

            }

            if (deviceFound)
            {
                lbl_connStatus.Text = "CONNECTED";

                reportDescriptor = device.GetReportDescriptor();
                inputReceiver = reportDescriptor.CreateHidDeviceInputReceiver();
                deviceItem = reportDescriptor.DeviceItems[0];
                inputParser = deviceItem.CreateDeviceItemInputParser();
                list.Changed += new EventHandler<DeviceListChangedEventArgs>(DeviceListChanged);
                inputReceiver.Received += new EventHandler(ReceivedData);
                inputReceiver.Start(hidStream);
            }
            else
            {
                lbl_connStatus.Text = "NOT FOUND";
            }

        }

DeviceListChanged Event:

/*On any change to list of connected devices, scan for our device*/
/*if not present, unregister ReceivedData event handler*/
        private void DeviceListChanged(object sender, EventArgs e)
        {

            var hidDeviceList = list.GetHidDevices().ToArray();

            deviceFound = false;
            foreach (HidDevice dev in hidDeviceList)
            {
                if ((dev.VendorID == 0x0000) && (dev.ProductID == 0x0505))
                {
                    device = dev;
                    /*We found our interface*/
                    if (device.TryOpen(out hidStream))
                    {
                        deviceFound = true;
                    }
                    
                }

            }

            if (deviceFound)
            {
                lbl_connStatus.Invoke((MethodInvoker) delegate
                {
                    lbl_connStatus.Text = "CONNECTED";
                });
                using (hidStream)
                {
                    reportDescriptor = device.GetReportDescriptor();
                    inputReceiver = reportDescriptor.CreateHidDeviceInputReceiver();
                    deviceItem = reportDescriptor.DeviceItems[0];
                    inputParser = deviceItem.CreateDeviceItemInputParser();
                    inputReceiver.Start(hidStream);
                    inputReceiver.Received += new EventHandler(ReceivedData);
                }

            }
            else
            {
                inputReceiver.Received -= ReceivedData;
                lbl_connStatus.Invoke((MethodInvoker)delegate
                {
                    lbl_connStatus.Text = "NOT FOUND";
                });
            }

        }

DataReceived Event Handler

        private void ReceivedData(object sender, EventArgs e)
        {
            HidSharp.Reports.Report report;

            if(inputReceiver.TryRead(inputReportBuffer,0,out report))
            {

                if (inputParser.TryParseReport(inputReportBuffer, 0, report))
                {
                    /*TODO: Read the data here, send to main thread*/

                }

            }

        }

I was under the impression that this would fire my ReceivedData event when I get data in my IN endpoint, but it does not fire (I never hit a breakpoint placed inside).  Does inputReceiver.Received not do what I'm expecting it to do perhaps?  Maybe I'm set up fine and it's the microcontroller code I need to look deeper at?

I based my DataReceived handler off this snippet in the example code:

    inputReceiver.Received += (sender, e) =>
    {
         Report report;
         while (inputReceiver.TryRead(inputReportBuffer, 0, out report))
         {
              // Parse the report if possible.
              // This will return false if (for example) the report applies to a different DeviceItem.
              if (inputParser.TryParseReport(inputReportBuffer, 0, report))
              {
                  // If you are using Windows Forms, you could call BeginInvoke here to marshal the results
                  // to your main thread.
                  WriteDeviceItemInputParserResult(inputParser);
              }
          }
      };

Thanks in advance for the help!

Faldon. YOU MUST READ, James Francis Bellinger!

$
0
0

Dear James Francis Bellinger, we have been spending money on Faldon until the current days, with no complaints, but nowadays your service has been getting worse and worse. Servers are lagging, C and Reset aren't working, and now Faldon is offline. And we never get an answer for any of that, and never know what to do, because you're the only person who can do something about it and we never had a way to contact you. Don't you think it's time to make things clear to us? Give us your last words about Faldon and this subject, what you should have done a long time ago and never did. You owe us this!

Faldon. YOU MUST READ, James Francis Bellinger!

$
0
0

Dear James Francis Bellinger, we have been spending money on Faldon until the current days, with no complaints, but nowadays your service has been getting worse and worse. Servers are lagging, C and Reset aren't working, and now Faldon is offline. And we never get an answer for any of that, and never know what to do, because you're the only person who can do something about it and we never had a way to contact you. Don't you think it's time to make things clear to us? Give us your last words about Faldon and this subject, what you should have done a long time ago and never did. You owe us this!

Latest version (from nuget) does not always work on Linux/dotnet

$
0
0

I have a simple program that talks to an HID device
It runs fine on Windows/.NET, Linux/Mono, Windows/dotnet but not so much on Linux/dotnet

Basically it crashes when enumerating the HID devices:

AvailableDevices = DeviceList.Local.GetHidDevices(VID, PID).Select(d => new HidDeviceUI(d)).ToList();

     
Sometimes this works and returns the list of devices, but most of the times it results in the following error:

double free or corruption (out)

(this happens as both a normal user and as root user)

Please note that all OS/Framework combinations have been tested on two distinct computers.

Dotnet version on Linux: 2.2.103
Ubuntu 18.0.4.1


HidSharp.Exceptions.DeviceIOException on HidDevice.Open, Windows only

$
0
0

I have a consistent issue specifically to Windows. On Linux, this exact code runs without issue, but on Windows it throws a DeviceIOException every time, but only for this one device. This is running on HidSharp 2.1.0, .NET Core 3.0.

using System;
using System.Linq;
using HidSharp;
using HidSharp.Reports.Input;

namespace HidTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var devices = HidSharp.DeviceList.Local.GetHidDevices();
            var tablets = devices.Where(d => d.GetFriendlyName() == "Intuos PS").ToList();
            tablets.OrderBy(t => t.GetFriendlyName());
            Device = tablets[0];
            Console.WriteLine(Device.GetMaxInputReportLength());
            var descriptor = Device.GetReportDescriptor();
            Console.WriteLine(descriptor);
            Reciever = descriptor.CreateHidDeviceInputReceiver();
            Reciever.Start(Device.Open());
            Reciever.Received += PacketReceived;
            Console.Read();
        }

        static HidDevice Device;
        static HidDeviceInputReceiver Reciever;

        static void PacketReceived(object sender, EventArgs e)
        {
            var buffer = new byte[Device.GetMaxInputReportLength()];
            Reciever.TryRead(buffer, 0, out var rpt);
            Console.WriteLine(BitConverter.ToString(buffer));
        }
    }
}

This throws this exception every time

Exception has occurred: CLR/HidSharp.Exceptions.DeviceIOException
An unhandled exception of type 'HidSharp.Exceptions.DeviceIOException' occurred in HidSharp.dll: 'Unable to open HID class device (\\?\hid#vid_056a&pid_030e&mi_02#8&123e7efa&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}).'
   at HidSharp.Platform.Windows.WinHidStream.Init(String path)
   at HidSharp.Platform.Windows.WinHidDevice.OpenDeviceDirectly(OpenConfiguration openConfig)
   at HidSharp.Device.OpenDeviceAndRestrictAccess(OpenConfiguration openConfig)
   at HidSharp.Device.Open(OpenConfiguration openConfig)
   at HidSharp.Device.Open()
   at HidSharp.HidDevice.Open()
   at HidTest.Program.Main(String[] args) in \\vmware-host\Shared Folders\Repos\hidtest\HidTest\Program.cs:line 20

Faldon, the project you started at the age of 13.

$
0
0

Sorry to hijack this thread.

Since you actually show activity here..

For the love of god, do something about Faldon. You have been quiet for nearly a decade while you are still getting income from a game you have left to rot. You are keeping the server up, most likely because it still rakes in money. You are neglecting people that are making you money and we still want to play your game. Ive been playing for 20(!) Years. I dont think its unreasonable from us to demand answers. Give us access to the game, make someone a GM that can actually update the server/reboot it. Rick quit so there are no GMs that can create new content or atleast keep the server lag-free and Citizenship/Stat Resets working.

-Rob

Faldon, the project you started at the age of 13.

$
0
0

Sorry to hijack this thread.

Since you actually show activity here..

For the love of god, do something about Faldon. You have been quiet for nearly a decade while you are still getting income from a game you have left to rot. You are keeping the server up, most likely because it still rakes in money. You are neglecting people that are making you money and we still want to play your game. Ive been playing for 20(!) Years. I dont think its unreasonable from us to demand answers. Give us access to the game, make someone a GM that can actually update the server/reboot it. Rick quit so there are no GMs that can create new content or atleast keep the server lag-free and Citizenship/Stat Resets working.

-Rob

C servers not working

$
0
0

I recently purchases citizenship and it is not working.

Issue with Exponent...

$
0
0

Hi -

I've run into an issue retrieving the ReportDescriptor from a UPS device.  HidSharp throws an exception of:

ArgumentOutOfRangeException("value", "Value range is [0, 15]

in the method DecodeExponent.

When I step into the code, I see that the value being passed in is 0xFFFFFFFF (4294967295)

If I modify the code that validates the value to ignore the check for a valid range for the exponent, all the other values in the returned ReportDescriptor look valid.  And I get good values for Exponent in other reports.

As I'm new to HID and trying to understand, was curious as to what a -1 for Unit Exponent might indicate. I'm assuming it's an undefined value and if I use a tool like USBlyzer and look at the HID Report Descriptor it returns, there is no value for Unit but it does not throw an exception.

Any help or information anyone could provide would be greatly appreciated.

Thanks in advance.

Viewing all 119 articles
Browse latest View live