这可能非常简单,但我在Rx的学习曲线底部.我花了几个小时阅读文章,观看视频和编写代码,但我似乎对一些似乎应该非常简单的事情有一些心理障碍.
我正在从串口收集数据.我曾经习惯Observable.FromEventPattern捕获SerialDataReceived事件并将其转换为可观察的字符序列.到现在为止还挺好.
现在,我想基于分隔符来解析该字符序列.没有涉及新行,但每个"数据包"数据都由前导码和终结符包围,两个单个字符.为了争论,我们可以说它们是括号{和}.
所以如果我j u n k { H e l l o } j u n k在我的字符序列上得到
字符序列,那么我想要发出Hello或者{Hello}在我的字符串序列上.
我可能错过了一些简单的东西,但我甚至无法弄清楚如何处理这个问题.有什么建议吗?
我正在研究使用 Reactive Extensions for .NET (Rx) 的东西,我想要一个从队列(或类似的)中获取输入的序列。
我试过这样做:
static readonly Queue<DeviceTransaction> TransactionQueue = new Queue<DeviceTransaction>();
//...
var observableTransactionSource = TransactionQueue.ToObservable();
//...
observableTransactionSource.Subscribe(transactionObserver);
Run Code Online (Sandbox Code Playgroud)
它在一定程度上起作用,但是当队列为空时序列完成。我不想要一个空队列来结束序列。空并不意味着结束,它只是意味着“此刻不再”。
有没有办法在队列为空时停止序列完成,或者我应该以不同的方式思考整个问题?
我只是对我的SVN存储库做了一些愚蠢的事情,我不小心将一大堆东西导入到根目录而不是子文件夹中.我需要很长时间才能清理....除非有一个简单的方法对回购进行全局还原?帮助文件讨论了还原工作副本,但新导入的项目没有工作副本.有没有办法撤消导入?
我正在研究一组本质上是插件的东西,它们是 COM 服务器。每个插件都有一组由另一个组件管理的配置数据,配置数据的主键是插件的 ProgID。当插件需要访问配置项时,它会进行调用并传入其 ProgID 和所需属性的名称。这是一个遗留设计,我必须保持向后兼容性。
我现在需要加载每个插件的多个实例,每个实例都有一组不同的配置数据。我正在考虑的解决方案是为每个插件创建多个唯一的 ProgID,每个 ProgID 将指向插件的单个 ClsId。因此,插件的每个实例都将通过其 ProgID 进行标识,ProgID 仍用作配置数据的主键,并且所有内容都 100% 向后兼容。
所以,问题:
在VB6中,编写提供COM类的应用程序是一件简单的事情,应用程序将作为系统范围的单例运行,并且能够将COM类提供给多个进程.我相信这称为COM LocalServer.
什么是.NET中的等价物?如何制作处理来自多个应用程序或进程的请求的单个可执行文件?
我正在开发一个简单的项目,作为TDD中的练习而不是其他任何东西.该程序从Web服务器获取一些图像并将其保存为文件.为了记录,我正在做的(我期望的最终结果)与这个perl脚本非常相似,但在C#中.
我已经到了需要将文件保存到磁盘的地步.我需要进行单元测试来强制执行代码.我不知道如何处理这个问题.我希望能够验证代码是否创建了具有预期文件名的预期文件,当然我根本不想触摸文件系统.我并不是单元测试和TDD的新手,但出于某种原因,我真的不清楚在这种情况下该怎么做.我确信,一旦我看到它,答案就会很明显,但......我脑中一个代码来自的神秘地方就是不合作.
我选择的工具是MSpec和FakeItEasy,但感谢任何框架中的建议.什么是单元测试文件系统交互的明智方法?
我需要编写一个 WiX 捆绑包,除非系统上存在某个注册表项,否则该捆绑包不会运行。
\n\n在正常的安装项目中,我会使用启动条件,但我不创作安装项目,而只是创作顶级包。该<Bundle>元素有一个Condition属性,但在 Burn 手册中它说:
\n\n\n捆绑的状况。如果不满足条件,捆绑包将拒绝运行。在加载引导程序应用程序之前(检测之前)检查条件,因此只能引用内置变量,例如指示操作系统版本的变量。
\n
因此,看来除了最基本的高级检查之外,我不能使用元素Condition的 \xc2\xa0 属性进行任何操作,当然也不能用于我需要的功能。Bundle
那么,如何在捆绑包级别检查注册表项,并在该项不存在时拒绝继续?
\n我遇到了通过串口通信的程序的问题.它必须发送和接收的一个字符是度符号,ASCII 0xBF.它已经工作好多年了,现在突然串口对象开始丢失第7位,所以我得到0x3F而不是0xBF.
我确信这是我做过的傻事,因为我在那个区域修改了我的代码 - 但是我看不出我做了什么导致了第8位的丢失.
我的端口初始化如下:
BaudRate 9600 int
DataBits 8 int
DiscardNull true bool
DtrEnable true bool
Encoding {System.Text.ASCIIEncoding} System.Text.Encoding Handshake None System.IO.Ports.Handshake
NewLine "\n" string
Parity None System.IO.Ports.Parity
ParityReplace 63 byte
PortName "COM4" string
ReadBufferSize 128 int
ReadTimeout 250 int
ReceivedBytesThreshold 1 int
RtsEnable true bool
StopBits One System.IO.Ports.StopBits
WriteBufferSize 64 int
WriteTimeout 1500 int
Run Code Online (Sandbox Code Playgroud)
有什么想法我如何将端口恢复到8位操作?
我有一个相当大的解决方案,其中包含两个基于Sandcastle + Sandcastle帮助文件生成器(SHFB)的文档项目.这些项目都可以从命令行(msbuild project.shfb)正确构建,也可以使用SHFB Visual Studio 2010集成的beta版本.
当我在TeamCity中运行构建时,我在文档构建中遇到了一个神秘的构建失败.SHFB日志说明了这一点:
[Sandcastle Help File Builder, version 1.9.3.0]
Cached Resolve Reference Links 2 Component. Copyright © 2006-2011, Eric Woodruff, All Rights Reserved
http://SHFB.CodePlex.com
Info: CachedResolveReferenceLinksComponent: Loaded 61 cached MSDN URL entries
Info: SaveComponent: Instantiating component.
Info: BuildAssembler: Building topic N:MyProject
Info: BuildAssembler: Building topic T:MyProject.ActionNotImplementedException
Info: BuildAssembler: Building topic AllMembers.T:MyProject.ActionNotImplementedException
Info: BuildAssembler: Building topic Methods.T:MyProject.ActionNotImplementedException
Info: BuildAssembler: Building topic Properties.T:MyProject.ActionNotImplementedException
Info: BuildAssembler: Building topic Overload:MyProject.ActionNotImplementedException.#ctor
Info: BuildAssembler: Building topic M:MyProject.ActionNotImplementedException.#ctor
Info: BuildAssembler: … 我正在使用在Raspberry Pi下运行的XAML开发通用Windows平台应用程序Windows 10 IoT Core.该应用程序驱动I2C总线上的温度传感器.传感器类是MLX90614Thermometer.传感器使用a DispatcherTimer每100毫秒(大约)获取读数并更新移动平均值.当移动平均值变化超过指定阈值时,传感器会引发ValueChanged事件并在事件args中提供新值.
在我的ViewModel类中TemperatureSensorViewModel,我订阅了传感器的ValueChanged事件并使用它来更新命名的绑定属性Ambient,Channel1和Channel2.这些属性绑定到XAML UI中的文本块.这是事件处理程序:
void HandleSensorValueChanged(object sender, SensorValueChangedEventArgs e)
{
switch (e.Channel)
{
case 0:
Ambient = e.Value;
break;
case 1:
Channel1 = e.Value;
break;
case 2:
Channel2 = e.Value;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
...这里是一个示例数据绑定Ambient...
<TextBlock x:Name="Ambient" Grid.Row="1" Text="{Binding Path=Ambient}" Style="{StaticResource FieldValueStyle}" />
Run Code Online (Sandbox Code Playgroud)
我正在使用MVVM Light Toolkit,因此我的属性就像这样实现(仅Ambient显示,但除了名称之外其他都是相同的):
public double Ambient
{
get { return ambientTemperature; …Run Code Online (Sandbox Code Playgroud) xaml inotifypropertychanged mvvm-toolkit windows-10-iot-core uwp
c# ×4
.net ×2
com ×2
burn ×1
com-interop ×1
equivalent ×1
installation ×1
localserver ×1
msbuild ×1
mvvm-toolkit ×1
ole ×1
progid ×1
sandcastle ×1
serial-port ×1
shfb ×1
svn ×1
tdd ×1
teamcity ×1
undo ×1
unit-testing ×1
uwp ×1
windows ×1
wix ×1
xaml ×1