我正在开发一个应用程序。使用 C# 和 WPF 技术。该应用程序有一个按钮(Button)。阅读日志,可以清楚地看到,当按下该按钮时,有时 MouseUp 会在 MouseDown 之前发生。为什么会发生这种情况,如何纠正这种情况?
主页
/
user-312216
Liidia's questions
HResult 0x80072EE7 的错误异常是什么意思?哪里可以看?
具体来说,在调用 MediaFoundationReader.Read 时,使用 NAudio 库时会发生错误。下面是我的代码。
private void PlaceLinksIntoBuffer()
{
Uri baseUri = new Uri(InputPath);
while (!IsStopped)
{
mediaSegmentUris.TryPeek(out IMediaSegment mediaSegment);
if (mediaSegment == null) continue;
int mediaSegmentApproximateDuration = Convert.ToInt32(Math.Ceiling(mediaSegment.Duration));
if (IsBufferNearlyFull(mediaSegmentApproximateDuration))
{
Thread.Sleep(500);
}
else
{
mediaSegmentUris.TryDequeue(out mediaSegment);
Uri resourceUri = new Uri(baseUri, mediaSegment.Uri);
MediaFoundationReader mediaFoundationReader;
try
{
mediaFoundationReader =
new MediaFoundationReader(resourceUri.AbsoluteUri);
readUris.Enqueue(mediaSegment.Uri);
}
catch (Exception e)
{
brokenUris.Enqueue(mediaSegment.Uri);
continue;
}
byte[] buffer = new byte [mediaFoundationReader.WaveFormat.AverageBytesPerSecond *
mediaSegmentApproximateDuration * 2];
int readBytes = mediaFoundationReader.Read(buffer, 0,
mediaFoundationReader.WaveFormat.AverageBytesPerSecond * mediaSegmentApproximateDuration * 2);
if (bufferedWaveProvider == null)
{
bufferedWaveProvider = new BufferedWaveProvider(mediaFoundationReader.WaveFormat)
{
BufferDuration = TimeSpan.FromSeconds(mediaSegmentApproximateDuration * 5)
};
}
bufferedWaveProvider.AddSamples(buffer, 0, readBytes);
mediaFoundationReader.Dispose();
}
}
}
我有一个通过 USB 连接的二维码扫描仪。自然,它的供应商 ID 和产品 ID 是已知的。有了这些数据,如何识别要监听的端口?我尝试使用 LibUsbDotNet 库,但我不知道如何使用它。我可以通过以下方式获得有关已连接键盘的信息,但我完全不知道下一步该做什么。
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_Keyboard");
ManagementObjectCollection keyboards = searcher.Get();
foreach (ManagementObject queryObj in keyboards)
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("Win32_Keyboard instance");
Console.WriteLine("-----------------------------------");
Console.WriteLine("Availability: {0}", queryObj["Availability"]);
Console.WriteLine("Caption: {0}", queryObj["Caption"]);
Console.WriteLine("ConfigManagerErrorCode: {0}", queryObj["ConfigManagerErrorCode"]);
Console.WriteLine("ConfigManagerUserConfig: {0}", queryObj["ConfigManagerUserConfig"]);
Console.WriteLine("CreationClassName: {0}", queryObj["CreationClassName"]);
Console.WriteLine("Description: {0}", queryObj["Description"]);
Console.WriteLine("DeviceID: {0}", queryObj["DeviceID"]);
Console.WriteLine("ErrorCleared: {0}", queryObj["ErrorCleared"]);
Console.WriteLine("ErrorDescription: {0}", queryObj["ErrorDescription"]);
Console.WriteLine("InstallDate: {0}", queryObj["InstallDate"]);
Console.WriteLine("IsLocked: {0}", queryObj["IsLocked"]);
Console.WriteLine("LastErrorCode: {0}", queryObj["LastErrorCode"]);
Console.WriteLine("Layout: {0}", queryObj["Layout"]);
Console.WriteLine("Name: {0}", queryObj["Name"]);
Console.WriteLine("NumberOfFunctionKeys: {0}", queryObj["NumberOfFunctionKeys"]);
Console.WriteLine("Password: {0}", queryObj["Password"]);
Console.WriteLine("PNPDeviceID: {0}", queryObj["PNPDeviceID"]);
if (queryObj["PowerManagementCapabilities"] == null)
Console.WriteLine("PowerManagementCapabilities: {0}", queryObj["PowerManagementCapabilities"]);
else
{
UInt16[] arrPowerManagementCapabilities = (UInt16[])(queryObj["PowerManagementCapabilities"]);
foreach (UInt16 arrValue in arrPowerManagementCapabilities)
{
Console.WriteLine("PowerManagementCapabilities: {0}", arrValue);
}
}
Console.WriteLine("PowerManagementSupported: {0}", queryObj["PowerManagementSupported"]);
Console.WriteLine("Status: {0}", queryObj["Status"]);
Console.WriteLine("StatusInfo: {0}", queryObj["StatusInfo"]);
Console.WriteLine("SystemCreationClassName: {0}", queryObj["SystemCreationClassName"]);
Console.WriteLine("SystemName: {0}", queryObj["SystemName"]);
}
Console.ReadKey();
我有一个带有文本框的窗口。用户可能会或可能不会在文本字段中输入数据。程序窗口允许您绘制各种形状。任何时候都可以按下 Tab 和 Enter 等键。二维码扫描仪也通过 USB 端口连接到计算机,模拟键盘上的击键。也可以使用其他类型的扫描仪,例如无线扫描仪。扫描仪读取的代码将用于验证数据。如何区分二维码扫描仪输入和键盘输入?我在 Internet 上找到了有关扫描仪输入字符的速度远高于通过键盘输入字符的信息。在我的例子中,扫描仪输入字符之间的间隔是 118-121 毫秒。另一方面,如果我只是用手敲击键盘,输入字符会更快。为了接收从扫描仪或键盘输入的文本,我使用了 TextInput 事件。有人对此有任何想法吗?
我有以下 HLS 播放列表:https ://digitacdn.akamaized.net/hls/live/629243/radiosuomipop/master-128000.m3u8 。它包含指向 AAC 编码音频文件片段的链接。文件内容:
#EXTM3U
#EXT-X-VERSION:3
## Created with Z/IPStream R/2 v1.03.23
#EXT-X-MEDIA-SEQUENCE:2984548
#EXT-X-TARGETDURATION:6
#EXT-X-PROGRAM-DATE-TIME:2018-10-23T11:44:44Z
#EXTINF:5.99, no desc
01493/seg128000-02984548.aac
#EXTINF:5.99, no desc
01493/seg128000-02984549.aac
#EXTINF:5.99, no desc
01493/seg128000-02984550.aac
#EXTINF:5.99, no desc
01493/seg128000-02984551.aac
#EXTINF:5.99, no desc
01493/seg128000-02984552.aac
#EXTINF:5.99, no desc
01493/seg128000-02984553.aac
我无法弄清楚这些细分市场在哪里。如何访问它们以便使用例如 NAudio MediaFoundationReader 播放它们?