1、y for debugging use. If we cannot use the same error codes that Winsock reports, we should at least change them to one or more less weird error codes.NetworkStream from BluetoothClient Currently will not allow a high rate of data to be sent. Widcomms Write call will accept only part of the buffer wh
2、en its buffers are near full. We need to hold the data until it signals that its buffers have emptied. Currently safest used with non-async methods (Write/Read). Need to do some more work to ensure 100% safety in calling Begin-/EndWrite/-Read methods.This should be ok now, thought Ive some final che
3、cking to do. Also we currently dont do any flow control if weve received lots of data. If the peer is sending lots of data and the local side is not reading it then well just keep receiving it and storing it. We need to call SetFlowEnabled(true) when we have stored more than a certain amount, and ca
4、ll it with false when the local side has read enough. Close needs some work also. When the local side calls Close, all operations are cancelled: any pending connects, and any read and write operations are aborted. This means that any data not yet delivered is discarded. We should copy TcpClients Lin
5、gerState property to BluetoothClient to allow the user to control the close behaviour, but it should finish sending the data in the background by default like Socket.Weve added a LingerState property to BluetoothClient (like the one on Socket and on TcpClient). Currently we support LingerOption(true
6、, 0) and LingerState(true, t 0). In the first case we discard any data at close which remains the default for now, and in the latter case we will wait for timeout t for pending data to be sent and only then discard any data that is still remaining to be sent and close.Support for LingerOption(false)
7、 will be considered in the future there we have to keep the connection open in the background and continue to attempt to send the data, but on application shutdown then close cleanly regardless. No support for ReadTimeout and WriteTimeout. Currently the base Stream, throwns InvalidOperationException
8、, but these could be supported.BluetoothDeviceInfobool Authenticated get; 9ClassOfDevice ClassOfDevice get; bool Connected get; 2BluetoothAddress DeviceAddress get; string DeviceName get; set; 3byte GetServiceRecordsUnparsed(Guid service);NoSupportedEx. No way to get the raw bytes of the record from
9、 Widcomm.ServiceRecord GetServiceRecords(Guid service); 5 6 7.Guid InstalledServices get; NotImplementedExDateTime LastSeen get; If device in range and discovered returns the actual time, else DateTime.MinValueDateTime LastUsed get; DateTime.MinValue 4void Refresh(); No effect 8bool Remembered get;
10、int Rssi get; Needs a connection to the remote device to work.void SetServiceState(Guid service, bool state, bool throwOnError);NotImplementedExvoid SetServiceState(Guid service, bool state); NotImplementedExvoid ShowDialog(); Displays a simple WinForms MessageBox, like CE versionvoid Update(); NotI
11、mplementedEx 3Notes/ToDo:1. Done ToDo get_Rssi Need to call CBtIf:GetConnectionStats and return the tBT_CONN_STATS.Rssi value, or the invalid value if the call fails.2. ToDo get_Connected Note on the MSFT stack this property returns constant false on WCE/WM platform, and on Win32 is updated only aft
12、er Refresh has been called. OnWidcomm after Refresh can call IsRemoteDeviceConnected. (Or could call GetConnectionStats like for 1 and check whether it succeeds. Apparently its tBT_CONN_STATS.bConnected field is not set).3. ToDo Update()/set_DeviceName A change of DeviceName is stored on the object,
13、 but not persisted to the system. Could do like on the WCE/WM platform and persist the updated DeviceName to the stacks Registry keys.4. Done ToDo get_ LastSeen Why dont we set LastSeen=DateTime.UtcNow when we learn the devices from discovery (inquiry)? We could do that on all three platforms5. ToDo
14、/Note GetServiceRecords Widcomm provides access only to particular Attributes and not to the whole raw record. The current support is reading the Service Class and Name, and RFCOMM Channel Number attributes only. We need to read the other well-known attributes, and also use the CSdpDiscoveryRec:Find
15、Attribute function to get any non-standard ones.Note, it will not be possible to read any general attributes that has a data element sequence/alternative value, the Widcomm CSdpDiscoveryRec:FindAttribute functionwont return them.6. Note Widcomm returns ALL the records it has ever read from the peer!
16、7. Note Widcomm does not support lookup to the local machine8. ToDo Refresh() Should we re-read the DeviceName from the Registry?9. Note Originally we just used get_Authenticated=get_Remembered; as of r47830 we now report the correct Authenticated value using CBtIf:BondQuery.BluetoothRadioClassOfDev
17、ice ClassOfDevice get; Returns zero. No API to read it.IntPtr Handle get; NotSupportedExHardwareStatus HardwareStatus get; Returns constant Runningint LmpSubversion get; 4BluetoothAddress LocalAddress get; Manufacturer Manufacturer get; RadioMode Mode get; WCE/WM Win32 Returns constant Discoverable
18、2set; NotImplementedEx 3string Name get; set; NotImplementedEx 5Manufacturer SoftwareManufacturer get; Broadcom 1Notes:1. ToDo get_SoftwareManufacturer Should it return Broadcom or Widcomm?2. ToDo get_ RadioMode CBtIf:IsDeviceConnectable/-Discoverable are only supported on WCE. Any substitutes on Wi
19、n32?3. ToDo set_ RadioMode Call CBtIf:AllowToConnect/SetDiscoverable on WCE/WM.4. ToDo LOW There are many other HCI/LMP version numbers that could be exposed. Also on MSFT/CE, dont know about MSFT/Win32.5. ToDo/Note On MSFT, is not supported on Win32 and just updates the Registry on WCE/WM. Widcomm
20、on Win32 had SetLocalDeviceName but it “has been disabled” according to the docs. Could just update the Registry.SelectBluetoothDeviceDialogIs supported. Though it just reuses the existing dialog from the NETCF version, so it could do with some prettification! Does not fill the screen however as it
21、does on NETCF.Should also have the Cancel action enabled before the first fill. Also should do a remembered/authd-only lookup first, and re-fill the listview when the *slow* all-devices lookup completes.BluetoothListenerMost support is in place. However I havent done a lot of testing of usage of it,
22、 so it may not be as robust as the other features. The listener class and basic comms support is in place. Mainly by the simple change of adding a BeginAccept/EndAccept pair to WidcommRfcommStream using the existing m_arConnect infrastructure internally. Secondly some small additions to the AssignSc
23、n and SetSecurityLevel usage were made.Those simple changes allow the listener to accept one connection only! Done. For prod湾t湾大 赛 局 域 网管 理 (信 息 安 全 )职 业 技 能 竞 赛 组 织 委 员 会 所 有 。%2.1.3其它投资万元5042.192.1.3.1其它投资占比21.38%2.1.4固定资产投资占比69.19%2.2流动资金万元7266.532.2.1流动资金占比30.81%3收入万元49794.004总成本万元39733.315利润总额万元10060.696净利润万元7545.527所得税万元1.378增值税万元1387.689税金及附加万元398.8510纳税总额万元4301.7011利税总额万元11847.2212投资利润率42.65%13投资利税率50.23%14投资回报率31.99%15回收期年4.6316设备数量台(套)16217年用电量千瓦时463623.4718年用水量立方米29184.1419总能耗吨标准煤59.4720节能率28.56%21节能量吨标准煤19.8222员工数量人1066搀戀挀愀挀愀挀需蝜J