是否可以使用C#控制台应用程序中的包装器从VLC播放中当前播放的文件中读取曲目统计信息(时间,标题等)?有没有人对包装使用有任何建议?
这是我的代码:
string Unreadz = "0";
while (true)
{
Unreadz = CheckMail();
if (!Unreadz.Equals("0")) port.Write("m");
else port.Write("n");
}
Run Code Online (Sandbox Code Playgroud)
如果Unreadz小于10,我想在0之前添加一个port.write.
这是我尝试过的:
if (Unreadz < 10) port.Write("0" + Unreadz);
else port.Write("" + Unreadz);
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为它Unreadz是一个字符串.
代码:
static void Main(string[] args)
{
Console.WriteLine("Memory mapped file reader started");
using (var file = MemoryMappedFile.OpenExisting("AIDA64_SensorValues"))
{
using (var readerz = file.CreateViewAccessor(0, 0))
{
var bytes = new byte[567];
var encoding = Encoding.ASCII;
readerz.ReadArray<byte>(0, bytes, 0, bytes.Length);
File.WriteAllText("C:\\myFile.txt", encoding.GetString(bytes));
var readerSettings = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment };
using (var reader = XmlReader.Create("C:\\myFile.txt", readerSettings))
{
while (reader.Read())
{
using (var fragmentReader = reader.ReadSubtree())
{
if (fragmentReader.Read())
{
reader.ReadToFollowing("value");
SerialPort port = new SerialPort("COM2", 9600, Parity.None, 8, StopBits.One);
port.Open();
port.Write(reader.ReadElementContentAsString() …Run Code Online (Sandbox Code Playgroud) 这是输入字符串的一部分,我不能修改它,它总是以这种方式(通过共享内存),但我可以修改后,我把它放入一个字符串当然:
<sys><id>SCPUCLK</id><label>CPU Clock</label><value>2930</value></sys><sys><id>SCPUMUL</id><label>CPU Multiplier</label><value>11.0</value></sys><sys><id>SCPUFSB</id><label>CPU FSB</label><value>266</value></sys>
Run Code Online (Sandbox Code Playgroud)
我用两个都读过它:
String.Concat(
XElement.Parse(encoding.GetString(bytes))
.Descendants("value")
.Select(v => v.Value));
Run Code Online (Sandbox Code Playgroud)
和:
XmlDocument document = new XmlDocument();
document.LoadXml(encoding.GetString(bytes));
XmlNode node = document.DocumentElement.SelectSingleNode("//value");
Console.WriteLine("node = " + node);
Run Code Online (Sandbox Code Playgroud)
但是他们跑步时都有错误; 输入有多个根(有多个根元素引用),我不想分割字符串.
他们以任何方式读取字符串取值<value>和</value>不将字符串吐入多个输入之间的值吗?
你好,我有这部分代码:
static void Main(string[] args)
{
Console.WriteLine("Memory mapped file reader started");
using (var file = MemoryMappedFile.OpenExisting("sensor"))
{
using (var reader = file.CreateViewAccessor(0, 3800))
{
var bytes = new byte[4051];
Console.WriteLine("Reading bytes");
for (var i = 0; i < bytes.Length; i++)
Console.Write((char)bytes[i] + "");
Console.WriteLine(string.Empty);
}
}
Console.WriteLine("Press any key to exit ...");
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
它打开共享内存,然后将其写入var字节并显示它.我怎么会把它写成一个字符串?我知道它与"var bytes = new byte [4051];"有关.但我显然不能将"byte"写入新字符串.
PS现在代码的输出(带数组)是简单的文本:ABCDEFG ...等
谢谢
我不确定我正在尝试的操作的名称是什么,但我想"翻转"给定范围内的数字的值.
我有一个C#程序,它接收的数字从1到1023之间的任何值变化.我如何"翻转"这个数字,这样如果我收到1023那么它将是1,750将是274,512仍然是512正好一半?
我在考虑使用某种类型的循环,但我从未做过这样的事情.我的研究提出了人们想要,例如,把40变成04,但这不是我想要的.
这是有问题的代码:
using (var file = MemoryMappedFile.OpenExisting("AIDA64_SensorValues"))
{
using (var readerz = file.CreateViewAccessor(0, 0))
{
var bytes = new byte[567];
var encoding = Encoding.ASCII;
readerz.ReadArray<byte>(0, bytes, 0, bytes.Length);
File.WriteAllText("C:\\myFile.txt", encoding.GetString(bytes));
var readerSettings = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment };
using (var reader = XmlReader.Create("C:\\myFile.txt", readerSettings))
{
Run Code Online (Sandbox Code Playgroud)
这就是myfile.txt的样子:
<sys><id>SCPUCLK</id><label>CPU Clock</label><value>1598</value></sys><sys><id>SCPUFSB</id><label>CPU FSB</label><value>266</value></sys><sys><id>SMEMSPEED</id><label>Memory Speed</label><value>DDR2-667</value></sys><sys><id>SFREEMEM</id><label>Free Memory</label><value>415</value></sys><sys><id>SGPU1CLK</id><label>GPU Clock</label><value>562</value></sys><sys><id>SFREELVMEM</id><label>Free Local Video Memory</label><value>229</value></sys><temp><id>TCPU</id><label>CPU</label><value>42</value></temp><temp><id>TGPU1</id><label>GPU</label><value>58</value></temp>
Run Code Online (Sandbox Code Playgroud)
如果我将数据写入硬盘驱动器上的txt文件:
File.WriteAllText("C:\\myFile.txt", encoding.GetString(bytes));
Run Code Online (Sandbox Code Playgroud)
然后使用片段XmlReader读取相同的文本文件:
XmlReader.Create("C:\\myFile.txt");
Run Code Online (Sandbox Code Playgroud)
它读得很好,程序运行并完成它应该如此,但如果我直接读取片段XmlReader像:
XmlReader.Create(encoding.GetString(bytes));
Run Code Online (Sandbox Code Playgroud)
在线上运行"路径中的非法字符"时出现异常XmlReader.Create.
香港专业教育学院尝试首先将其写入一个单独的字符串并使用xmlreader读取它,并且尝试将其打印到CMD以查看它看起来是什么样子也没有用,因为CMD不会显示处理正确的无效字符?
但是我做得很好Console.WriteLine(encoding.GetString(bytes));,它与txt文件完全匹配.
所以以某种方式将它写入文本文件是删除一些"非法字符"?你们有什么感想?
我有一个计时器,每秒循环通过以下代码.这段代码一个接一个地读取几个xml片段,然后将它们打印到屏幕上,然后在一秒钟之后再重复一遍.输出:
34,
23,
12,
Run Code Online (Sandbox Code Playgroud)
我想要做的是将所有数据写入一个字符串,如34,23,12,然后返回它,以便另一个类可以使用它.但是,如果我把它(字符串代码,你会在下面看到)在if (fragmentReader.Read())代码下它不起作用,因为它只是与它上面的console.writeline做同样的事情:读取其中一个片段然后写入控制台,然后是下一个片段,它不会将片段中的所有值都添加到一个字符串中.
谢谢
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
using (var file = MemoryMappedFile.OpenExisting("AIDA64_SensorValues"))
{
using (var readerz = file.CreateViewAccessor(0, 0))
{
var bytes = new byte[195];
var encoding = Encoding.ASCII;
readerz.ReadArray<byte>(0, bytes, 0, bytes.Length);
//File.WriteAllText("C:\\myFile.txt", encoding.GetString(bytes));
StringReader stringz = new StringReader(encoding.GetString(bytes));
var readerSettings = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment };
using (var reader = XmlReader.Create(stringz, readerSettings))
{
while (reader.Read())
{
using (var fragmentReader = reader.ReadSubtree())
{
if (fragmentReader.Read())
{
reader.ReadToFollowing("value"); …Run Code Online (Sandbox Code Playgroud) 好吧,我有一些不断回避我的语法问题.:(
一个是最终的类型或命名空间定义,或期望的文件结束
而另一方面约为private static void OnTimedEvent1(object source, ElapsedEventArgs e){预期的一半
谢谢
和实际的CODE :(我把错误放在这里)
namespace Gmail_final_prep
{
public class Gmail_FP
{
private static System.Timers.Timer gTimer;
public static void GMain()
{
gTimer = new System.Timers.Timer(2000);
// Hook up the Elapsed event for the timer.
gTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent1);
gTimer.Interval = 2000;
gTimer.Enabled = true;
Console.WriteLine("Press the Enter key to exit the program.");
Console.ReadLine();
// If the timer is declared in a long-running method, use
// KeepAlive to prevent garbage collection from …Run Code Online (Sandbox Code Playgroud)