[C#] UDP Socket

static Socket client = null;

//[连接]

client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
try
{
client.Bind(new IPEndPoint(IPAddress.Parse(LocalIP.Text.Trim()), int.Parse(LocalPort.Text.Trim())));
client.Connect(IPAddress.Parse(DevIP.Text.Trim()), int.Parse(DevPort.Text.Trim()));
RecordClientInfo("[客户端报告]连接服务器成功!");
}
catch (Exception)
{
RecordClientInfo("[客户端报告]连接服务器失败!");
return;
}

if (threadClientRev == null)
threadClientRev = new Thread(ClientRev);
threadClientRev.IsBackground = true;
threadClientRev.Start();

//[发送]

client.Send(buffer);

//[接收]

 

private void ClientRev()
{
UInt32[] info_error = new UInt32[22]; ;
while (!cancelTokenSource.IsCancellationRequested)
{
try
{ //定义一个1M的内存缓冲区,用于临时性存储接收到的消息
byte[] arrRecvmsg = new byte[1024 * 1024];
//将客户端套接字接收到的数据存入内存缓冲区,并获取长度
int length = client.Receive(arrRecvmsg);
//将套接字获取到的字符数组转换为人可以看懂的字符串
byte [] bufrcs= new byte[length];for (int i = 0; i < length; i++)
{
bufrcs[i] = arrRecvmsg[i];
}

}

}

[SF]1阶和3阶低通滤波对比

采样频率100HZ,截止频率20HZ ,效果很明显

x=[0:1:99];
p1 =x ;
iir1 =x ;

f=x;
fc=100; %采样频率

t=1/fc.*x;

f1=2; %信号频率
w1=2*pi*f1;

f2 =40; %干扰频率1
w2=2*pi*f2;

hold on
grid on

z1 = sin(w1*t); %
z2 = 0.2*sin(w2*t);
zz = z1+z2;

fh1 = 20; %一阶低通截止频率
a1 = 1/(1+(fc/(2*pi*fh1)));

%三阶IIR滤波

n0 = 0.098531160923927052 ;
n1 = 0.29559348277178116 ;
n2 = 0.29559348277178116 ;
n3 = 0.098531160923927052 ;

d0 = 1 ;
d1 = -0.57724052480630283 ;
d2 = 0.42178704868956196 ;
d3 = -0.056297236491842671;

%3阶高通
bn0 = 0.25691560124846347 ;
bn1 = -0.7707468037453904 ;
bn2 = 0.7707468037453904 ;
bn3 = -0.25691560124846347 ;

bd0 = 1 ;
bd1 = -0.57724052480630295 ;
bd2 = 0.42178704868956196 ;
bd3 = -0.056297236491842678 ;

fn0 = 0.42080777983773182 ;
fn1 = 0.42080777983773182 ;

fd0 = 1;
fd1 = -0.15838444032453636;

a2 = 0.5
for n=(2:1:length(x));
p1(n) = (1-a2)*p1(n-1)+ a2 * zz(n);
end

%y(n) = n0*x(n) + n1*x(n-1) +n2*x(n-2)+n3*x(n-3) – d1*y(n-1) – d2*y(n-2)-d3*y(n-3)-d4*y(n-4)
iir1 = zz; %3阶低通
iir2 = zz; %3阶高通
iir3 = zz; %1阶低通

for n=(4:1:length(x));
iir1(n) = n0*zz(n) + n1*zz(n-1) +n2*zz(n-2)+n3*zz(n-3) – d1*iir1(n-1) – d2*iir1(n-2)-d3*iir1(n-3);
end

for n=(2:1:length(x));
iir3(n) = fn0*zz(n) + fn1*zz(n-1)- fd1*iir1(n-1);
end

for n=(4:1:length(x));
iir2(n) = bn0*zz(n) + bn1*zz(n-1) +bn2*zz(n-2)+bn3*zz(n-3) – bd1*iir2(n-1) – bd2*iir2(n-2)-bd3*iir2(n-3);
end

maxtri = zeros(size(repmat(t’,[1 2])));%初始化矩阵

maxtri(:,1)= t’;
maxtri(:,2)= zz’;

maxtri

plot(t,zz,’r’);
plot(t,iir1,’k’);
plot(t,iir2,’b’);

[SF]IIR滤波器

以3阶低通  IIR 巴特沃斯 为例

y(n) = n0*x(n) + n1*x(n-1) +n2*x(n-2)+n3*x(n-3) – d1*y(n-1) – d2*y(n-2)-d3*y(n-3)-d4*(n-4)

其中,例如采样频率Fs = 100HZ   截止频率Fc=20HZ

得出

n0 =0.098531160923927052

n1 =0.29559348277178116

n2 =0.29559348277178116

n3 =0.098531160923927052

d0 = 1

d1= -0.57724052480630283

d2= 0.42178704868956196

d3= -0.056297236491842671

带入公式

[MFC] 添加新窗口

1.在“资源视图”的”Dialog” 上右键,选择”插入Dialog”
2.选中新生成的Dialog,在属性里更改Dialog的名字
3.双击新生成的Dialog,在弹出的”MFC 添加类向导”里输入类名 “C****”,会自动生成 ****.c 和 ****.h ,点击 “完成”
4.添加测试按键,并添加测试
CDlg**** DlgTest;
DlgTest.DoModal();
5.生成后即可实现按键后弹出新对话框
6.如报错,则在报错的文件下加入 include “Resource.h” 和 ****.h