小编PIC*_*ain的帖子

如何在WPF中执行图像的动画旋转?

我刚开始使用WPF.我想在单击按钮时旋转图像,但我不希望图像在一次旋转中旋转.我想用一次看图像旋转一度.在C#中最简单的方法是什么?

c# wpf image rotation

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

过滤arraylist内容的最佳方法是什么?

假设我有USBDevice对象的ArrayList.每个USBDevice都有ProductID和VendorID属性(以及其他).我想创建另一个ArrayList,它是第一个只包含与特定VID匹配的USBDevice的子集.这样做的最短路径是什么?我还没有尝试过这个,但lambda表达式可以这样使用......

ArrayList CompleteList = new ArrayList();
...
// Fill CompleteList with all attached devices....
...
ArrayList SubSetList = CompleteList.Where(d => d.VID == "10C4")
Run Code Online (Sandbox Code Playgroud)

c# lambda arraylist filter

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

有没有办法让静态方法访问类的所有非静态实例?

这可能是一个愚蠢的问题,但无论如何我都会问它......我正在用C#.NET编程.我有一个包含非静态实例EventHandler的类.是否可以为静态方法中存在的类的每个实例触发该EventHandler?我知道这是一个很长的镜头!

c# methods static instance non-static

4
推荐指数
2
解决办法
1658
查看次数

使用If,ElseIf,ElseIf比使用If,If,If更好吗?

使用之间真的有什么区别吗?

If(this)
{
}
Else If(that)
{
}
Else
{
}
Run Code Online (Sandbox Code Playgroud)

或使用,

If(this)
{
}
If(that)
{
}
Else
{
}
Run Code Online (Sandbox Code Playgroud)

?一个人执行得更快吗?编译器或架构有什么不同吗?

if-statement

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

如何以编程方式调整PropertyGrid控件的水平分隔符?

我在我的C#项目中使用.NET PropertyGrid控件.

当包含网格的表单加载时,水平拆分器(将"设置"与"描述"分开)处于默认位置.如何在C#中以编程方式更改分割器的位置?

.net c# propertygrid gridsplitter visual-studio

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

如何创建一个可以访问创建它的类成员的嵌套类?

我在C#.NET中编程.我想创建一个嵌套类,可以访问创建它的实例的成员,但我似乎无法弄清楚如何.

这就是我想要做的:

Car x = new Car()
x.color = "red";
x.Door frontDoor = new x.Door();
MessageBox.Show(frontDoor.GetColor());    // So I want the method GetColor of the class Front Door to be able to access the color field/property of the Car instance that created it.
Run Code Online (Sandbox Code Playgroud)

我该怎么做?我尝试将Door类嵌套在Car类中,但是它不能以这种方式访问​​Car类的成员.我是否需要让汽车继承门类或其他东西?

c# inheritance nested class abstract

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

C程序中的联盟遇到麻烦

我正在开发一个使用Union的C程序.联合定义在FILE_A头文件中,看起来像这样......

// FILE_A.h****************************************************
xdata union  
{
long position;
char bytes[4];
}CurrentPosition;
Run Code Online (Sandbox Code Playgroud)

如果我在FILE_A.c中设置CurrentPosition.position的值然后调用FILE_B.c中使用union的函数,则union中的数据将返回Zero.这在下面说明.

// FILE_A.c****************************************************
int main.c(void)
{
    CurrentPosition.position = 12345;
    SomeFunctionInFileB();
}

// FILE_B.c****************************************************
void SomeFunctionInFileB(void)
{
    // After the following lines execute I see all zeros in the flash memory.
    WriteByteToFlash(CurrentPosition.bytes[0];
    WriteByteToFlash(CurrentPosition.bytes[1];
    WriteByteToFlash(CurrentPosition.bytes[2];
    WriteByteToFlash(CurrentPosition.bytes[3];
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我将一个long传递给SomeFunctionInFileB(long temp)然后将它存储到该函数中的CurrentPosition.bytes中,最后调用WriteBytesToFlash(CurrentPosition.bytes [n] ......它的工作正常.

似乎CurrentPosition Union不是全球性的.所以我尝试更改头文件中的联合定义以包含这样的extern关键字......

extern xdata union  
{
long position;
char bytes[4];
}CurrentPosition;
Run Code Online (Sandbox Code Playgroud)

然后把它放在源(.c)文件中......

xdata union  
{
    long position;
    char bytes[4];
}CurrentPosition;
Run Code Online (Sandbox Code Playgroud)

但这会导致编译错误,说:

C:\SiLabs\Optec Programs\AgosRot\MotionControl.c:76: error 91: extern definition for 'CurrentPosition' mismatches …

c global unions

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

如何在字节变量中存储sbyte值?

我用C#编程.我有一个sbyte变量.假设它保持-10,二进制是11110110.我想将这个值的二进制表示存储在一个字节变量中.因此,当我将sbyte(-10)复制到字节时,字节值将为245.如果我尝试使用Convert.ToByte(sbyte),它会抛出一个有意义的异常.我真的不想从一种类型转换到另一种类型,而是进行逐位复制.我怎样才能做到这一点?

c# unsigned byte

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

有一种简单的方法可以将数字转换为C中的十六进制ASCII字符吗?

我正在为嵌入式设备工作C固件程序.我想通过串口发送一个十六进制字符值数组.有没有一种简单的方法将值转换为ASCII十六进制?

例如,如果数组包含0xFF,我想发送ASCII字符串"FF",或者对于十六进制值0x3B我想发送"3B".

这通常是怎么做的?

我已经有了串行发送功能,所以我可以这样做......

char msg[] = "Send this message";
SendString(msg);
Run Code Online (Sandbox Code Playgroud)

并且SendString函数为传递的数组中的每个元素调用此函数:

// This function sends out a single character over the UART
int SendU( int c)
{
    while(U1STAbits.UTXBF);
    U1TXREG = c;
    return c;
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个可以让我这样做的功能......

char HexArray[5] = {0x4D, 0xFF, 0xE3, 0xAA, 0xC4};
SendHexArray(HexArray);

//Output "4D, FF, E3, AA, C4"
Run Code Online (Sandbox Code Playgroud)

c embedded hex ascii

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

在16位处理器上提高32位数学性能

我正在为嵌入式设备开发一些固件,该设备使用16位PIC,工作速率为40 MIPS,并以C编程.系统将控制两个步进电机的位置,并始终保持每个电机的步进位置.每个电机的最大位置约为125000步,因此我不能使用16位整数来跟踪位置.我必须使用32位无符号整数(DWORD).电机以每秒1000步的速度移动,我设计了固件,以便在定时器ISR中处理步骤.计时器ISR执行以下操作:

1)将一个电机的当前位置与目标位置进行比较,如果它们是相同的设置,则isMoving标志为false并返回.如果它们不同,则将isMoving标志设置为true.

2)如果目标位置大于当前位置,向前移动一步,然后增加当前位置.

3)如果目标位置小于当前位置,向后移动一步,然后减小当前位置.

这是代码:

void _ISR _NOPSV _T4Interrupt(void)
{
    static char StepperIndex1 = 'A';    

    if(Device1.statusStr.CurrentPosition == Device1.statusStr.TargetPosition)
    {
        Device1.statusStr.IsMoving = 0;
        // Do Nothing
    }   
    else if (Device1.statusStr.CurrentPosition > Device1.statusStr.TargetPosition)
    {
        switch (StepperIndex1)      // MOVE OUT
        {
            case 'A':
                SetMotor1PosB();
                StepperIndex1 = 'B';
                break;
            case 'B':
                SetMotor1PosC();
                StepperIndex1 = 'C';
                break;
            case 'C':
                SetMotor1PosD();
                StepperIndex1 = 'D';
                break;
            case 'D':
                default:
                SetMotor1PosA();
                StepperIndex1 = 'A';
                break;      
        }
        Device1.statusStr.CurrentPosition--;    
        Device1.statusStr.IsMoving = 1;
    }   
    else
    {
        switch (StepperIndex1)      // MOVE …
Run Code Online (Sandbox Code Playgroud)

c performance 32-bit pic 16-bit

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