我正在使用.Net微框架,因此StringBuilder不可用.
我已经看到来自apt专业人员的一些代码使用chars的Arraylist来连接和构建字符串,而不是+运算符.它们本质上构建了一个托管代码StringBuilder.
这有性能优势吗?假设连接数大于10且字符串长度也大于10.
在ChipworkX设备上,我们将使用以下方法读取文件:
File.ReadAllBytes(filename);
Run Code Online (Sandbox Code Playgroud)
但是如果我们在内存量少得多的NetDuino Plus上尝试,
我们就会得到一个OutOfMemoryException.
文件不是那么大,但我想在这种情况下都是相对的(最大1.5kb).
在这样的设备上读取文件的正确方法是什么?
我有一个FEZ板(我认为这不重要),我正在通过串口与它通信.我制作了一个WPF应用程序,在那里我打开COM端口并在其上写入数据.这一切都很好,但是在发送数据后随机发送一次(有时是3次,有时是4次),当我尝试再次发送时,我在端口的Write方法上得到一个异常,说"连接到系统的设备无法正常工作"或尝试在此异常后关闭端口我得到"拒绝访问端口".当我重新启动程序时,我在Open方法上得到了相同的错误(这是合乎逻辑的).当我只是断开代表串行链路的USB并重新连接时,我可以再次使用该端口.
这是我的代码:
SerialPort port = new SerialPort("COM10", 9600);
public MainWindow()
{
InitializeComponent();
port.Open();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
SendMessage("Relay1On\r\n");
}
private void button2_Click(object sender, RoutedEventArgs e)
{
SendMessage("Relay1Off\r\n");
}
private void SendMessage(string message)
{
try
{
port.Write(message);
}
catch (Exception exc)
{
listbox1.Items.Add(exc.Message);
}
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
port.Close();
}
Run Code Online (Sandbox Code Playgroud)
我不认为我做任何奇怪的事情.在FEZ板上运行的代码如下:
private Gadgeteer.Interfaces.DigitalOutput _relay;
void ProgramStarted()
{
try
{
usbSerial.Configure(9600, GT.Interfaces.Serial.SerialParity.None, GT.Interfaces.Serial.SerialStopBits.One, 8);
usbSerial.SerialLine.LineReceivedEventDelimiter = "\r\n";
usbSerial.SerialLine.AutoReadLineEnabled = true;
usbSerial.SerialLine.ReadTimeout = GT.Interfaces.Serial.InfiniteTimeout;
usbSerial.SerialLine.LineReceived …Run Code Online (Sandbox Code Playgroud) 我无法stm32f4discovery使用VS2010在.NET中编译代码.
运用 NETMF 4.2
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
namespace MFConsoleApplication1
{
public class Program
{
private static InterruptPort interruptPort;
public static void Main()
{
interruptPort = new InterruptPort(Cpu.Pin.GPIO_Pin2,
false,
Port.ResistorMode.PullUp,
rt.InterruptMode.InterruptEdgeLevelLow);
interruptPort.OnInterrupt += new NativeEventHandler(port_OnInterrupt);
Thread.Sleep(Timeout.Infinite);
}
private static void port_OnInterrupt(uint port, uint state, TimeSpan time)
{
Debug.Print("Pin=" + port + " State=" + state + " Time=" + time);
interruptPort.ClearInterrupt();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在编译时,我收到以下错误:
No overload for 'port_OnInterrupt' matches delegate 'Microsoft.SPOT.Hardware.NativeEventHandler'
我怎么能编译代码?
我从"Expert …
我在.NETMF C#中有一个API,它包含一个发送HTTP请求的函数.对于那些熟悉NETMF的人来说,这是"webClient"示例的一个经过大量修改的版本,该示例是一个简单的应用程序,演示了如何提交HTTP请求并回复响应.在示例中,它只是打印响应并返回void.但是,在我的版本中,我需要它来返回HTTP响应.
出于某种原因,Visual Studio报告并非所有代码路径都返回一个值,尽管我可以告诉他们这样做.
这是我的代码......
/// <summary>
/// This is a modified webClient
/// </summary>
/// <param name="url"></param>
private string httpRequest(string url)
{
// Create an HTTP Web request.
HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
// Set request.KeepAlive to use a persistent connection.
request.KeepAlive = true;
// Get a response from the server.
WebResponse resp = request.GetResponse();
// Get the network response stream to read the page data.
if (resp != null)
{
Stream respStream = resp.GetResponseStream();
string page = …Run Code Online (Sandbox Code Playgroud) 这些计算器是否有某种类型的处理器,如计算机?是否可以为他们编程?最后,是否有可能在其上运行.NET Micro Framework?
谢谢.
alt text http://image.made-in-china.com/2f0j00aCAEjhmggQkT/Scientific-Calculator-with-Natural-Textbook-Display-FX-82ES.jpg alt text http://www.ecarepackage.org/ecareshop/images /calculator.jpg
我正在从Arduino(c语言)切换到Netduino(c#语言).
在我的arduino程序中,我有以下功能(内置):
我想将其转换为C#.我有以下代码:
int ConstrainValue(int value, int min, int max)
{
int Value = value;
int Min = min;
int Max = max;
if (Value >= Max)
{
Value = Max;
return Value;
}
else if (Value <= Max)
{
Value = Min;
return Value;
}
return Value;
}
Run Code Online (Sandbox Code Playgroud)
但是,我也希望能够将其用于double数据类型.是否可以修改函数以便可以使用多种数据类型?
我试图将这段c ++代码转换为c#:
if (latch_state & 0x1) {
MC->setPin(AIN2pin, HIGH);
} else {
MC->setPin(AIN2pin, LOW);
}
if (latch_state & 0x2) {
MC->setPin(BIN1pin, HIGH);
} else {
MC->setPin(BIN1pin, LOW);
}
if (latch_state & 0x4) {
MC->setPin(AIN1pin, HIGH);
} else {
MC->setPin(AIN1pin, LOW);
}
if (latch_state & 0x8) {
MC->setPin(BIN2pin, HIGH);
} else {
MC->setPin(BIN2pin, LOW);
}
Run Code Online (Sandbox Code Playgroud)
我知道足以转换MC->setPin(PinNum, state)为MC.setPin(pinNum, state)所以它们不是问题,但我对if语句将成为什么感到困惑.
latch_state是类型uint8_t,但似乎处理像一个字节(这是我试图将其转换为),并且0x1似乎也是一个字节.
那么二元和操作如何在if语句中进行求值?
对于转换,我应该这样做
if ((latch_state & 0x1) == 0x0)或者if ((latch_state & 0x1) …