2018年6月28日星期四

串口通信中的INPCK和ISTRIP标志位

网上有很多软件开发方面的教程,真的很感谢那些人。有时候工作需要用到一块知识,在网上看教程是最快的,比买书还快还省钱。开始写博客的我,深知写这些教程的不易。这类教程很多,往往同一个主题有很多类似的文章。不过这些文章的水平也良莠不齐,同一个主题一定要多看几篇文章,互相参照。
前段时间我要写Linux下的串口初始化的函数,就在网上找了几篇文章学习,并主要参考了一篇认为写得不错的文章,copy了他的例程中的部分代码。其中有一句代码,
options.c_iflag &= !INPCK;
不论串口参数怎么配置,他都把这个INPCK的标志位关闭。我对此深信不疑,也没有深究,直到前几天看一本书,书中正好讲到串口参数配置这个地方的时候,不论串口参数怎么配置,他都有一句
newtio.c_iflag |= (INPCK | ISTRIP);
这引起了我的注意。到底这个INPCK标志位应该打开还是关闭,还有这个ISTRIP标志位为什么都要打开,而之前那个人根本就没操作这个标志位?
于是查资料、做实验,最终弄明白了这两个标志位。
INPCK指的是是否对输入进行奇偶校验。PARENB标志位只是“告诉”了串口有奇偶校验,但是别人发来的数据是否要进行校验,则是看这个标志位是不是打开。没有打开INPCK的话,发送方加了校验或者不加校验,我们要配置的这个串口都不关注,只看数据位是什么。如果打开了INPCK,而发送方的数据和校验不一致,我们要配置的这个串口将会把这个字节置为0;只有校验一致,我们才会正确接收。
ISTRIP指的是是否丢掉8位数据位的最高比特。如果打开了这个标志位,则不论数据位的最高一个bit是1还是0,则一律置为0。比如你的串口接收到了一个字节是0xFF, 如果打开了ISTRIP标志位,那你只能从串口中读到0x7F.打开这个标志位,如果只是传输ASCII字符,那不会有问题,而且可以一定程度上防止乱码。但如果传输的数据不仅仅有ASCII字符,那麻烦就大了。

2018年6月27日星期三

2017年12月31日唐山所见

 我家住在78号小区的时候,需要买菜的话就要到这里和不远处一个国营商店。这么多年过去了,市场还在,只是外围多了一圈店铺。

很多瓷器上漂亮的花纹不是画上去的,而是印在一种塑料薄膜上,然后将塑料薄膜贴在瓷器上,当然外层还要上釉防止脱落磨损,所以你看不到这层薄膜。这种薄膜就叫花纸。我读小学时很多同学都有这个,图案五花八门。当时我家对门的女孩叫翟羽翼,她妈妈就在这里上班。

这个学校什么时候开的我也不知道,我小时候没有。那时我们唐山高考最厉害的中学是唐山一中。没想到后来又杀出来一个衡水一中,还在我们唐山开了分校,据说是私立学校性质的,学费很贵,而且学生进去后是那种监狱式的教学。

大名鼎鼎的红玫瑰骨质瓷就诞生在这里。

唐山开民用机场了。有一次我都计划好了,放假回唐山,假期结束后从唐山机场坐飞机去深圳出差。无奈计划赶不上变化,未能成行。

开平区新工村。我小的时候这里是个一层的百货商店,里面有卖散装冰激凌的。售货员将冰激凌从筒里舀出半球,放在碟子里。每次爸爸妈妈带着去吃都觉得很幸福。

马家沟耐火材料厂,群众俗称“马砖”。我家很多亲戚都在这个厂工作过甚至退休。我小时候还是个效益不错的企业,上个世纪80年代员工家里就给装了闭路电视。不过现在已经衰败了。

马砖正门

马砖主办公楼

马砖对面的工房,不过不属于马砖,而是属于“马矿”。

2018年6月11日星期一

宽带网速不快怎么办?

1. 不要使用乱七八糟的小宽带
北方的用户尽量使用联通的宽带,南方的用户尽量使用电信的宽带。这两家的宽带虽然贵,但是贵有贵的道理,正所谓一分钱一分货。如果实在不想花那么多钱,也可以选择其他宽带,但要做好网速不快的心理准备。这里给想省钱的人推荐一下移动的宽带。移动的宽带我用了四年,虽然不如联通、电信的好,但在垃圾宽带里算好的。如果联通、电信的打100分的话,移动的可以打90分,相比之下性价比已经很高了。
包括移动在内的这些小宽带有什么问题呢?我们在使用网络时,数据从我们这端的电脑或手机到达对端的服务器,或者反之,一般要经过很多节点。每个节点都会产生延时, 如果是某个非常繁忙的节点,还会出现堵塞和丢失数据。因此很多互联网大公司,在互联网上设立了很多CDN节点。举个例子,假如我开了个视频网站,我把服务器接入了北京联通的网络。但是还有很多网友使用长城宽带的网络,而从长城宽带接入北京联通速度很慢,根本无法看视频。为了照顾这部分网友的需求,于是我在长城宽带也架设了一台服务器,内容与我原来的服务器内容一致,后来这台服务器就可以称为CDN.
这些小宽带,他们标榜自己带宽X00 MB,  OK, 如果你要访问的网站恰好在这些宽带提供商的网络上架设了CDN, 根据我之前的体验,确实可以达到这个带宽,甚至比宣称的还要高一点。但是问题来了,并不是每个网站都会在各个宽带运营商的网络上架设CDN, 当你要访问的网络没有CDN的时候,那速度就很差了。因为他们接入联通、电信的骨干网也是要花钱的,而且价格不菲,这些小宽带运营商出于节省成本的考虑,这部分出口很小,所以网速非常慢,绝对达不到标称的带宽。
小宽带运营商还有另外一个问题。如果他们按照国家规定的价格接入联通、电信骨干网的话,价格很贵。同样出于节省成本的考虑,他们会找一些小地方急于发展业务的电信、联通,甚至一些有多余带宽的企业,通过它们接入骨干网。这种方式有个专有名词叫“流量穿透”。流量穿透本身没有技术上的问题,但是穿来穿去会造成路由表很复杂,难免某个路由项配置错误或者已经不通。
由于上述两个问题,如果你要访问的都是主流大众化网站,那可能影响不大。但一旦访问一些小众网站,就会速度很慢甚至根本不通。我以前使用北京移动的固定宽带就深受其害。那时我经常需要在家里访问公司的VPN节点以及认证网关。VPN慢得难以忍受,认证网关由于路由问题,有时几个星期都不通。所以宽带到期后,我宁可花几倍的价钱装联通的宽带也不用它了。
2. 使用名牌支持5GHz频段的无线路由器
Wifi分为2.4GHz和5GHz两个频段。支持Wifi的设备都支持2.4GHz频段,少部分高端设备还支持5GHz。由此可见,2.4GHz频段的兼容性最好,此外这个频段的穿墙能力还比5GHz强。但也由此带来了一个新问题,由于现在WiFi太普及,家家都有Wifi路由器,造成了2.4GHz频段极其拥挤。在城市的楼房里随便一搜,都能搜到十几个热点,连对面楼的都能搜到。而这些路由器收发数据,都要依靠2.4GHz那十几个信道。可以想象一下早高峰路上堵车的情景,情况是一样的。而5GHz频段相对好些,一是因为支持的路由器少,这个频段还不那么拥堵;二是因为穿墙能力弱,在空气中传播衰减的也厉害。我前些天测试,同样在华为应用市场下载应用,二者的网速能差10倍。
之所以强调名牌路由器,是因为名牌路由器一般都会对网速有严格的测试。而杂牌路由器就不管那么多了,只要网络能通就不管了。我家装联通宽带送的带光猫的路由器,只支持2.4GHz频段,而且在这个频段,即使信号非常好,协商速率也只能到72Mbps.而换上TP-LINK的某款路由器,即使在2.4GHz,可以协商到135Mbps.