小编fif*_*lus的帖子

C#如何访问公共结构的静态字段

我正在尝试访问我已经定义为公共的static字段struct.但是,由于其防护等级,我仍然"无法访问"任何人都可以帮助我吗?

public class Program
{
    public struct AT_CMD
    {
        static int x = 7;
       static  byte[] cmd_mode = new byte[3] { 0x2B, 0x2B, 0x2B };
       static  byte[] end_device_assoc = new byte[4] { 0x41, 0x54, 0x41, 0x31 };
      //should be 0 for end device, default is 0
       static  byte[] data_rate = new byte[4] { 0x41, 0x54, 0x42, 0x44 }; //3 for 9600, 5 for 38400
       static  byte[] channel = new byte[4] { 0x41, 0x54, 0x43, 0x48 }; …
Run Code Online (Sandbox Code Playgroud)

c#

5
推荐指数
2
解决办法
4944
查看次数

在main()中为SerialPort添加事件处理程序

我尝试为接收的数据事件订阅一个事件处理程序.好像我无法指定事件处理函数名称.我不明白为什么
myComPort.DataReceived + = new SerialDataReceivedEventHandler(comPort_DataReceived); 给我错误信息.这是问题所在,希望有人能回答.

一只忙碌的猫http://img827.imageshack.us/img827/5904/20120125102247.png

一只忙碌的猫http://img444.imageshack.us/img444/3855/20120125102202.png

namespace serialport
{
    public class Program
    {

        internal List<Byte> portBuffer = new List<Byte>(1024);

        static void Main()
        {


            //1. find available COM port
            string[] nameArray = null;
            string myComPortName = null;
            nameArray = SerialPort.GetPortNames();
            if (nameArray.GetUpperBound(0) >= 0)
            {
                myComPortName = nameArray[0];
            }
            else
            {
                Console.WriteLine("Error");
                return;
            }


            //2. create a serialport object
            // the port object is closed automatically by use using()
            SerialPort myComPort = new SerialPort();
            myComPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived); …
Run Code Online (Sandbox Code Playgroud)

c# idisposable event-handling

5
推荐指数
2
解决办法
1374
查看次数

Verilog,我可以为始终块内的多个位分配一个位值吗

下面是代码:

always @ (C[n-1])
begin
   C[2*n-1:n]=C[n-1];
end 
Run Code Online (Sandbox Code Playgroud)

那可能吗?如果没有,我该怎么做?基本上它正在执行符号扩展。

verilog

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

如何比较 gprof 中的不同优化级别文件

大家,我正在运行 gprof 来检查两个不同优化级别(-g -pg 与 -O3 -pg)下的执行时间百分比。

所以我得到的结果是,一个函数在 O3 中占用了 68% 的 ex-time,但在 -g 版本中只占用了 9%。

我不知道如何找出其背后的原因。我正在考虑在编译之前比较两个版本文件,但我不确定 cmd 是否这样做。

有没有其他方法可以找出这个执行时间差异的原因。

c

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

对4个整数大小的数组进行SSE操作

对于之前的非描述性问题,我们深表歉意.请允许我再次重新提出问题:

设置:

我需要使用SSE同时对来自4个阵列的4个32位值进行ADD和一些有点操作.这4个数组中的所有元素都是整数(32位).结果转到第5个数组.

所以我的问题是:

  1. 我需要包含哪些头文件和编译器标志,以便我可以使用C运行SSE?
  2. Paul提供的示例代码是否仍然有效?

另一个问题,如果我需要从整数A读取最后一位,从整数B读取第一位,并将整数C中的最后一位和第一位替换为我刚刚读取的值,我可以在这里使用SSE吗?或者有任何快速的方法吗?在正常情况下,而不是3访问?

代码由Paul提供

#include <stdint.h>
#include <emmintrin.h>

const size_t N = 4096;  // size of input/output arrays

int32_t array0[N];      // 4 x input arrays
int32_t array1[N];
int32_t array2[N];
int32_t array3[N];
int32_t array_sum[N];   // output array

for (size_t i = 0; i < N; i += 4)
{
    __m128i v0 = _mm_load_si128(&array0[i]); // load 4 x vectors of 4 x int
    __m128i v1 = _mm_load_si128(&array1[i]);
    __m128i v2 = _mm_load_si128(&array2[i]);
    __m128i v3 = _mm_load_si128(&array3[i]);
    __m128i vsum = …
Run Code Online (Sandbox Code Playgroud)

c assembly sse simd intrinsics

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

光线跟踪中的光泽反射

我正在做一个关于光线追踪的项目,现在我可以做一些基本的渲染.

下图有:

镜面反射,折射,纹理映射和阴影.

在此输入图像描述

我正在努力做有光泽的反射,到目前为止这是我得到的.谁能告诉我这个有光泽的反射图像是否有任何问题?

在此输入图像描述

相比之下,下面的图像来自镜面反射

在此输入图像描述

这是关于光泽反射的代码,基本上,一旦主光线与对象相交.从这个交叉点,它会随机拍摄另外80条光线,并取出这80条光线的平均颜色.我对这段代码的问题是x和y的大小,我必须将它们除以某个值,在这种情况下是16,这样光泽反射光线不会太随机.这个逻辑有什么问题吗?

             Colour c(0, 0, 0);

                     for (int i = 0; i < 80; i++) {

                          Ray3D testRay;
                          double a = rand() / (double) RAND_MAX;
                          double b = rand() / (double) RAND_MAX;
                          double theta = acos(pow((1 - a), ray.intersection.mat->reflectivity));
                          double phi = 2 * M_PI * b;
                          double x = sin(phi) * cos(theta)/16;
                          double y = sin(phi) * sin(theta)/16;
                          double z = cos(phi);
                          Vector3D u = reflect.dir.cross(ray.intersection.normal);
                          Vector3D v = reflect.dir.cross(u);
                          testRay.dir = x  * u …
Run Code Online (Sandbox Code Playgroud)

graphics raytracing

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