标签: .net-micro-framework

是否更快地使用字符的arraylist来执行多个字符串连接?

我正在使用.Net微框架,因此StringBuilder不可用.

我已经看到来自apt专业人员的一些代码使用chars的Arraylist来连接和构建字符串,而不是+运算符.它们本质上构建了一个托管代码StringBuilder.

这有性能优势吗?假设连接数大于10且字符串长度也大于10.

c# .net-micro-framework c#-3.0

2
推荐指数
1
解决办法
1634
查看次数

.NET Micro Framework,读取内存有限的设备上的文件

在ChipworkX设备上,我们将使用以下方法读取文件:

File.ReadAllBytes(filename);
Run Code Online (Sandbox Code Playgroud)

但是如果我们在内存量少得多的NetDuino Plus上尝试,
我们就会得到一个OutOfMemoryException.

文件不是那么大,但我想在这种情况下都是相对的(最大1.5kb).

在这样的设备上读取文件的正确方法是什么?

c# memory .net-micro-framework netduino

2
推荐指数
1
解决办法
2152
查看次数

一段时间后,SerialPort访问被拒绝

我有一个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)

c# serial-port .net-micro-framework access-denied netduino

2
推荐指数
1
解决办法
4511
查看次数

如何在微框架中实现中断?

我无法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 …

c# .net-micro-framework

2
推荐指数
1
解决办法
1402
查看次数

Visual Studio报告并非所有代码路径都返回值,即使它们确实如此

我在.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 c# http .net-micro-framework

1
推荐指数
1
解决办法
1169
查看次数

0
推荐指数
1
解决办法
742
查看次数

C#函数中的多种数据类型输入

我正在从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数据类型.是否可以修改函数以便可以使用多种数据类型?

.net c# arduino .net-micro-framework netduino

0
推荐指数
1
解决办法
1687
查看次数

将代码段从C++转换为C#

我试图将这段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) …

c# c++ .net-micro-framework

0
推荐指数
1
解决办法
214
查看次数