置顶随笔

[置顶]三层代码生成器2.0

摘要: 2.0版本上线: 1、添加了对存储过程生成代码,并且在DAL中有存储过程调用方法。 2、添加了IDAL层。 3、使用了反射、配置文件,是程序更加趋向与运行时动态。 4、界面做了一些美化。阅读全文

posted @ 2008-09-23 14:52 badnewfish 阅读(138) 评论(2) 编辑

2011年11月30日

三星s239手机与计算机同步_计算机通过手机上3G

部分内容转自http://raozhl.blog.163.com/blog/static/67924495201172891328240/

 

1、首先安装New_PC_Studio_1.5.1.10072_2 时不要连接手机,以windows xp2兼容模式高管权限运行安装程序,装到最好会提示win32异常,不要理他。因为在默认目录下C:\Program Files\Samsung\Samsung New PC Studio已经有所有程序了

2、安装楼主所说设置手机
为了能把老婆的S239搞成笔记本的MODEM,搞了一个下午,终于成功
三星S239缺省没有把机器端口打开,缺省的也不是USB连接模式,需要通过下面方法设置
待机模式下,输入*759#813580进入测试模式
选择“端口映射图”;“图表”;“USB SER1” 
回到待机模式下,输入*#2739#,选择“Open Port”
输入密码:*#67367678#,确定以自动保存(不知道三星为什么要缺省关掉USB功能,太不厚道了)
后面记得重启手机

3、连接手机,此时会在设备管理器--端口下出现一个"SAMSUNG Mobeile Modem Diagnostic Serial Port(WDM) (COMx)",同时在同学串行总线控制器中出现一个SAMSUG USB Composite Device,如果没有这个两个设备,则在出现黄色符号的设备上(前提是没插手机之前没有黄色符号),点击用“更新驱动软件”--“自动搜索”即可,如果不能自动搜索,需要在控制面板--打印机和设备--右键你的计算机标志--设备安装设置--选择“在我的计算机上找不到从windows update下载”--保存,然后回设备管理器搜索。

4、打开“C:\Program Files\Samsung\Samsung New PC Studio\NewPCStudio.exe”同时添加快捷方式以便后用,此时会自动连接到手机。如果此时连接不到手机,肯定是第三步驱动没有安装正确

5、软件的左下角有个齿轮图标,点一下,把发短信和“互联网连接器”添加进来,打开“互联网连接器”上面也有个小齿轮图标,添加连接设置,选择“china telecom”其它的设置不用改。回到“互联网连接器”,选择“SCH-s239”点连接即可。此时计算机右下角的网络设置(显示器图标),里面就有一一个“连接设置1”,目录和你使用过的VPN、USB3g网卡的连接放在一个栏目里的。以后就可以用这个了。

6、切不可升级New PC Studio,因为后期的这个软件可能是针对高端机的,根据我昨天折腾半天的经验,高版本的这个软件不一定能支持这个低端手机。如果你不幸安装了这些高版本的New PC Studio和Kies软件,请先删除它们,删除安装目录下的所有文件,如果有一个usb driver的文件夹,进去卸载掉usb驱动,或者把计算机设置为不主动去windows update搜索驱动(参照步骤3),然后卸载驱动。最后安装本例来做。

在最后,祝挣扎在折腾线上的侠客们成功!

 

 

posted @ 2011-11-30 11:25 badnewfish 阅读(61) 评论(0) 编辑

2011年11月25日

慎用匿名委托 Dispatcher.BeginInvoke导致UI卡死之发现

先描述一下需求,服务器程序需要对终端的在线状态进行跟踪,采用ping的发放获取信息,在ping通或者ping不通后需要对UI进行更新,下面是出问题的代码(此例ping的方法比较简单,尚未进行应用测试勿用作实际用途):

 

 1     public partial class MainWindow : Window
 2     {
 3         public MainWindow()
 4         {
 5             InitializeComponent();
 6         }
 7         List<string> ClientInfoList = new List<string>();
 8         private void Window_Loaded(object sender, RoutedEventArgs e)
 9         {
10             for (int i = 1; i < 50; i++)
11             {
12                 ClientInfoList.Add("192.168.1." + i.ToString());
13             }
14 
15             ThreadPool.QueueUserWorkItem(
16                delegate
17                {
18                    while (true)
19                    {
20                        Debug.WriteLine(DateTime.Now.ToString() + "Ping");
21                        int OnLineCout = 0;
22                        Ping pingSender = new Ping();
23                        PingOptions options = new PingOptions();
24                        for (int i = 0; i < ClientInfoList.Count; i++)
25                        {
26                            if (ClientInfoList[i] != "")
27                            {
28                                options.DontFragment = true;
29                                bool PingSuceess = false;
30                                PingReply reply = pingSender.Send(ClientInfoList[i], 100);
31                                if (reply.Status == IPStatus.Success)
32                                {
33                                    PingSuceess = true;
34                                }
35                        
36                                if (!PingSuceess)
37                                {
38                                    Debug.WriteLine(DateTime.Now.ToString() + "Ping失败,终端IP:" + ClientInfoList[i]);
39                                    this.Dispatcher.BeginInvoke((Action)delegate()
40                                     {
41                                         label1.Content = ClientInfoList[i];
42                                     });
43                                }
44                                else
45                                {
46                                    OnLineCout++;
47                                }
48 
49                            }
50                        }
51                        Debug.WriteLine(DateTime.Now.ToString() + "PingOver");
52                        Thread.Sleep(3000);
53                    }
54                }, null);
55 
56         }
57 
58         private void button1_Click(object sender, RoutedEventArgs e)
59         {
60             button1.Content = new Random().Next();
61         }
62     }

第39行为更新UI的方法,当循环执行完毕后执行第二次循环后,会不定期出现程序异常。实际的应用比这个例子代码要复杂很多,所以不断的注释,使代码简化,最终将问题锁定在本例中的39行附近,后来一直是怀疑不该使用this.Dispatcher.BeginInvoke这种方式来实现。再后来采用DispatcherTimer类来实现,由于程序其它线程也要操作一些UI对象,使用这种方式又导致UI响应太慢,出现卡顿现象(再多的DispatcherTimer都使用一个线程来调度,所以DispatcherTimer开的越多,UI越卡)。再后来找到了老赵的帖子《

警惕匿名方法造成的变量共享》受到启发,开始怀疑是匿名实现this.Dispatcher.BeginInvoke 造成的,后将代码改为以下:

 

 1     public partial class MainWindow : Window
 2     {
 3         public MainWindow()
 4         {
 5             InitializeComponent();
 6         }
 7         List<string> ClientInfoList = new List<string>();
 8         delegate void UpdateUI(string str);
 9 
10         void UpdateUIMethod(string str)
11         {
12             label1.Content = str;
13         }
14         private void Window_Loaded(object sender, RoutedEventArgs e)
15         {
16             for (int i = 1; i < 50; i++)
17             {
18                 ClientInfoList.Add("192.168.1." + i.ToString());
19             }
20             UpdateUI UUI = new UpdateUI(UpdateUIMethod);
21             ThreadPool.QueueUserWorkItem(
22                delegate
23                {
24                    while (true)
25                    {
26                        Debug.WriteLine(DateTime.Now.ToString() + "Ping");
27                        int OnLineCout = 0;
28                        Ping pingSender = new Ping();
29                        PingOptions options = new PingOptions();
30                        for (int i = 0; i < ClientInfoList.Count; i++)
31                        {
32                            if (ClientInfoList[i] != "")
33                            {
34                                options.DontFragment = true;
35                                bool PingSuceess = false;
36                                PingReply reply = pingSender.Send(ClientInfoList[i], 100);
37                                if (reply.Status == IPStatus.Success)
38                                {
39                                    PingSuceess = true;
40                                }
41 
42                                if (!PingSuceess)
43                                {
44                                    Debug.WriteLine(DateTime.Now.ToString() + "Ping失败,终端IP:" + ClientInfoList[i]);
45                                    //this.Dispatcher.BeginInvoke((Action)delegate()
46                                    // {
47                                    //     label1.Content = ClientInfoList[i];
48                                    // });
49                                    this.Dispatcher.BeginInvoke(UUI, ClientInfoList[i]);
50                                }
51                                else
52                                {
53                                    OnLineCout++;
54                                }
55 
56                            }
57                        }
58                        Debug.WriteLine(DateTime.Now.ToString() + "PingOver");
59                        Thread.Sleep(3000);
60                    }
61                }, null);
62 
63         }
64 
65         private void button1_Click(object sender, RoutedEventArgs e)
66         {
67             button1.Content = new Random().Next();
68         }
69     }

 

 

posted @ 2011-11-25 14:42 badnewfish 阅读(130) 评论(0) 编辑

2011年9月2日

BeginInvoke更新界面 UI死掉 WPF

BeginInvoke更新界面 UI死掉

 

异步socket的处理消息事件 void ProcessA_BBuff(byte[] GetBuffer, Client.ClientInfo clientTemp)中

需要根据客户端发来的坐标信息 更新UI上对应usercontrol的位置(类似于GIS系统中小人在地图上更新位置) 

 

当只把移动的少量代码(2行)写到BeginInvoke中时 就是说将BeginInvoke 写到ProcessA_BBuff这个事件里面 程序跑几分钟后UI就会死掉

  

this.Dispatcher.BeginInvoke((Action)delegate()
                { 

                //移动小人

                });

 

但是在主程序中这样写就好了:

 

this.Dispatcher.BeginInvoke((Action)delegate()
                {
                    ProcessA_BBuff(msgBuff, CI);
                });

 

也就是说 扩大了BeginInvoke的作用范围 就好了

具体什么原因 一直不解

posted @ 2011-09-02 16:21 badnewfish 阅读(78) 评论(0) 编辑

2011年9月1日

未处理 System.Reflection.TargetInvocationException Message=调用的目标发生了异常。

遇到次问题 多半是 this.Dispatcher.BeginInvoke((Action)delegate(){}) 大括号中的代码出了异常 如里面访问的数组单元被外部线程清空等 但是vs又捕捉不到

主程序会崩溃
                  

posted @ 2011-09-01 17:03 badnewfish 阅读(276) 评论(0) 编辑

2011年6月9日

屏幕坐标系中 已知两点坐标,第三点在两点的连线内 且已知第三点到两点中任意一点的距离 求第三点的坐标

                                    if (MACs.Count == 2)
                                    {
                                        ///点1为X值小的点
                                        double X1 = StationList[Indexs[0]].Coordinates_X;
                                        double X2 = StationList[Indexs[1]].Coordinates_X;
                                        double Y1 = StationList[Indexs[0]].Coordinates_Y;
                                        double Y2 = StationList[Indexs[1]].Coordinates_Y;
                                        double DBM1 = -DBMs[0];
                                        double DBM2 = -DBMs[1];
                                        ///点1为X值小的点
                                        if (StationList[Indexs[0]].Coordinates_X > StationList[Indexs[1]].Coordinates_X)
                                        {
                                            X1 = StationList[Indexs[1]].Coordinates_X;
                                            X2 = StationList[Indexs[0]].Coordinates_X;
                                            Y1 = StationList[Indexs[1]].Coordinates_Y;
                                            Y2 = StationList[Indexs[0]].Coordinates_Y;
                                            DBM1 = -DBMs[1];
                                            DBM2 = -DBMs[2];
                                        }

                                        ///在依赖RSSI的定位系统中 信号强度越大 对应的距离值越准确
                                        if (DBM1 > DBM2)
                                        {


 

                                            //public static double GetDistance(double P1, double A1, double A2, double P2, double F,double N)
                                            // {
                                                  // return Math.Pow(10, ((P1 + A1 + A2 - P2 - 20 * Math.Log10(F) + 27.56) / 20))+N;
                                            //}                                 

                                             double Distance = BLL.ConvertDBMToDistance.GetDistance(20, 3, 2.5, DBM1, 2400, 0);
                                            ///用反三角函数求出角度
                                            double JiaoQ = Math.Atan(Math.Abs(Y1 - Y2) / Math.Abs(X1 - X2));
                                            ///求出X的增量
                                            double XLenth = Distance * Math.Cos(JiaoQ);
                                            ///求出Y的增量
                                            double YLenth = Distance * Math.Sin(JiaoQ);
                                            if (Y1 < Y2)
                                            {
                                                X = X1 + XLenth;
                                                Y = Y1 + YLenth;
                                            }
                                            else if (Y1 > Y2)
                                            {
                                                X = X1 + XLenth;
                                                Y = Y1 - YLenth;

                                            }
                                            else if (Y1 == Y2)
                                            {
                                                X = X1 + XLenth;
                                                Y = Y1;
                                            }
                                        }
                                        else if (DBM1 < DBM2)
                                        {
                                            double Distance = BLL.ConvertDBMToDistance.GetDistance(20, 3, 2.5, DBM2, 2400, 0);
                                            double JiaoQ = Math.Atan(Math.Abs(Y1 - Y2) / Math.Abs(X1 - X2));
                                            double XLenth = Distance * Math.Cos(JiaoQ);
                                            double YLenth = Distance * Math.Sin(JiaoQ);
                                            if (Y1 < Y2)
                                            {
                                                X = X2 - XLenth;
                                                Y = Y1 - YLenth;
                                            }
                                            else if (Y1 > Y2)
                                            {
                                                X = X2 - XLenth;
                                                Y = Y2 + YLenth;

                                            }
                                            else if (Y1 == Y2)
                                            {
                                                X = X2 - XLenth;
                                                Y = Y1;
                                            }
                                        }

                                    }

posted @ 2011-06-09 16:11 badnewfish 阅读(147) 评论(0) 编辑

2011年5月29日

WPF学习笔记--向界面动态添加控件或者usercontrol

摘要: 在做工控业界面时,运行时添加和编辑界面元素会给程序带来更大的灵活性,同时更能增加用户体验的好评度。以下的例子代码实现:在应用程序界面需要更新时(如应用程序加载时)将存储于数据库的界面元素数据载入到UI当中,并且绑定一些事件或者菜单前台代码:<Canvas x:Name="AP_Plank" Height="3300" Width="2200"/>后台代码:/// <summary> /// 将所有基站添加到系统界面当中 /// </summary> void AddALlStationToUI() 阅读全文

posted @ 2011-05-29 00:40 badnewfish 阅读(272) 评论(0) 编辑

2011年5月27日

附加数据库失败,操作系统错误 5:"5(拒绝访问。)"的解决办法

摘要: 附加数据库失败,操作系统错误 5:"5(拒绝访问。)"的解决办法无法打开物理文件 XXX.mdf"。操作系统错误 5:"5(拒绝访问。)"。 (Microsoft SQL Server,错误: 5120) 找到xxx.MDF与xxx_log.LDF文件,右键-属性-安全-在组或用户名处添加Authenticated Users-更改该组权限为完全权限,再次附加成功。阅读全文

posted @ 2011-05-27 22:52 badnewfish 阅读(417) 评论(2) 编辑

2011年5月19日

事件和委托在通信编程中的应用

摘要: 封装后的socket类1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Text;4usingSystem.Net.Sockets;5usingSystem.Net;67namespaceSICOMSocket8{9publicclassSocketAsyncServer10{1112publicdelegatevoidProcessMessageeDelegate(SocketclientSock,byte[]msgBuff,DateTimegetDataTime);13publiceventProcessMessagee.阅读全文

posted @ 2011-05-19 23:33 badnewfish 阅读(49) 评论(0) 编辑

WPF学习笔记--运行时画图的实现

摘要: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Controls;using System.Windows;using System.Windows.Input;using System.Windows.Media;using System.Windows.Shapes;namespace Main.Ranging{ public class Ruler { public delegate void PolygonAddedDelegat阅读全文

posted @ 2011-05-19 23:23 badnewfish 阅读(115) 评论(1) 编辑

WPF学习笔记--一些新鲜的控件

摘要: System.Windows.Controls.ComboBox 之数据绑定:绑定到DataTableDataTable DTDepartments = new BLL.DepartmentT().GetAll();comboBoxAllDepartments.ItemsSource = DTDepartments.Rows;阅读全文

posted @ 2011-05-19 23:19 badnewfish 阅读(29) 评论(0) 编辑

导航

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

公告


点击这里给我发消息 
北京礼品网

巴顿的博客

昵称:badnewfish
园龄:5年2个月
粉丝:2
关注:0

搜索

 

常用链接

我的标签

随笔分类

随笔档案

相册

最新评论

阅读排行榜

评论排行榜

推荐排行榜